2011-12-18 11 views
6

私はまだDjangoには比較的新しいですし、ちょうどDjango-CMSで掘り下げ始めましたが、official docsから基本的な紹介を抜け出せません。django-cmsが静的なURLに正しくルーティングされていませんか?

私の問題は世界に関係するかもしれませんが、それはurls.pyの基本的なURLの問題のようです。

基本的に、私はチュートリアルにほぼ正確に従っています。唯一の違いは、ブログ/、フルパス〜/ workspace/djangocms/blog /の下に自分のcmsアプリケーションがあることです。私はSTATIC_URLSTATIC_ROOTをsettings.pyの下に適切に設定しました。私のMEDIA_URLMEDIA_ROOTも同じです。

私は基本テンプレートを{{ MEDIA_URL }}css/somecss.min.cssでCSSにリンクするように設定しているので、うまく動作するため、メディアのパスとディレクトリが表示されます。ただし、STATIC_URL:{{ STATIC_URL }}css/somecss.min.cssで同じ処理を行っても機能せず、404が生成されます。

また、私が知ることから、デフォルト/静的/ルートは他のディレクトリでうまく機能しているようです。 {% cms_toolbar %}によって生成されたコードは、/static/cms/css/plugins/cms.toolbar.cssのような場所からうまく生成され、CSSが適切に配信されます。

from django.conf.urls.defaults import *           
from django.contrib import admin 
from django.conf import settings 

admin.autodiscover() 

urlpatterns = patterns('', 
    # Examples: 
    # url(r'^$', 'blog.views.home', name='home'), 
    # url(r'^blog/', include('blog.foo.urls')), 

    # Uncomment the admin/doc line below to enable admin documentation: 
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')), 

    # Uncomment the next line to enable the admin: 
    # url(r'^admin/', include(admin.site.urls)), 
    (r'^admin/', include(admin.site.urls)), 
    url(r'^', include('cms.urls')), 
) 
if settings.DEBUG: 
    urlpatterns = patterns('', 
     url(r'^media/(?P<path>.*)$', 'django.views.static.serve', 
     {'document_root': settings.MEDIA_ROOT, 
     'show_indexes': True}), 
     url(r'', 
     include('django.contrib.staticfiles.urls')), 
    ) + urlpatterns 

答えて

6

urls.pyの

内容はfreenodeの上#djangoから私の答えを得ました。

主にdjango-cmsの場合、STATIC_ROOTは主に、生産時のdjango-cms自体の資産に使用されます。 djangoがpython manage.py runserverメソッドを使用して実行されている場合、STATIC_ROOTは無関係です。

From the Django docscollectstaticを使用してください(django-cmsはおそらく/ usr/local/lib/python ##/dist-packagesなどのディレクトリにあります)。これは、生産中にSTATIC_ROOTがどのファイルを使用するかを示します。

STATIC_URLを使用して他のディレクトリを提供する場合は、settings.pySTATICFILES_DIRSセクションに追加する必要があります。 (コメントを必ず読んでください - 相対パスではなく絶対パスを使用してください)。しかし、純粋なDjangoアプリケーションを作るときには、これは実際には比較的明らかです.Django-cmsのチュートリアルに厳密に従いたいと思っていたので、これはこれほど明らかではありませんでした。

8

同じチュートリアルを実行した後、この問題が発生しました。

私のサイトは標準的なウェルカムページを読み込み、CMSページを作成できます。しかし、テンプレートに静的ファイルを読み込もうとすると、404エラーが発生しました。

OPによって与えられた答えは私を助けました。

だけ明確にすること、これが私の仕事:

  1. はlocal_static

  2. のようなものにプロジェクト内の静的なディレクトリの名前を変更した設定に以下を追加します。PY

PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))

STATICFILES_DIRS = ( os.path.join(PROJECT_PATH, "local_static/"), )

これは私のために働きました。私は今、私の髪を引っ張ることをやめることができます

0

私は同じ質問hereを掲載しましたが、私は同じ問題に遭遇していました。私は何かの理由で静的ファイルを提供することができましたが、何らかの理由で私のdjango-cmsファイルが404を返し続けました。settings.pyと権限を確認しましたが、運があまりありませんでした。 Ubuntuの14.04で

が実行nginxのとGunicion I編集によって問題を解決することができるように:

sudo nano /etc/nginx/sites-enabled/django 

そしてIは

location /static/cms { 
    alias /usr/local/lib/python2.7/dist-packages/cms/static/cms/; 
} 

は、その後、私はnginxのとGunicorn

を再開次のコードブロックを追加しました
sudo service nginx restart && sudo service gunicorn restart 

と私はすべての欠落した静的ファイルを見ることができました

1

解決方法はとてもシンプルですが、私もそれを逃しました。

settings.pyから;

STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'mysitename', 'static'), 
) 

「mysitename」の中に「静的」という名前の別のフォルダがあります。ファイルをそこに置くと、期待通りにすべてが機能します。 manage.pyと同じレベルの 'static'フォルダは、赤いニシンです。

関連する問題