0

アップデート

スタイルシートが見えなくなった原因はわかりましたが、すべてを理解することはできませんでした。チュートリアルで説明されているエラー処理をテストするために、settings.py で DEBUG=False を設定しました。どういうわけか、debug を false に設定すると、静的ファイルを見つけられなくなります。構成をさらに調べて、その理由を明確に理解できるかどうかを確認します。それまでは、お気軽に返信または追加情報をコメントしてください。私はまだ学んでいます!

アップデート

ここから DJango のチュートリアルを進めていますが、障害にぶつかりました。チュートリアル 3 までです。ここでは、管理サイトを読み込んで壊れていないことを確認するときに、urls.py ファイルをリファクタリングする方法を説明しています。案の定、スタイルシートが欠落していたため、すべてが奇妙に見えました。スタイルシートはここから取得されます:

http://127.0.0.1:8000/static/admin/css/base.css

ブラウザでそのリンクをクリックすると、アプリ用に構成したカスタム 404 ページが表示されます。スタイルシートは以前は機能していましたが、どの変更がそれらを壊したのかわかりません。私は urls.py ファイルを調べて、ポーリング固有の URL 構成をすべて無駄に戻しました。hellodjango (私のプロジェクトの名前) の下にある現在の urls.py を次に示します。

from django.conf.urls import patterns, include, url

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
from django.http import HttpResponse

admin.autodiscover()

urlpatterns = patterns('',
    url(r'^polls/', include('polls.urls')),
    url(r'^admin/', include(admin.site.urls)),
)

def page_not_found(request, template_name='404.html'):
    return HttpResponse("Could not find the resource you asked for...")

handler404 = 'hellodjango.urls.page_not_found'

そして、これが私の polls ディレクトリの下の urls.py です:

from django.conf.urls import patterns, url

# Uncomment the next two lines to enable the admin:

urlpatterns = patterns('polls.views',
    url(r'^$', 'index'),
    url(r'^(?P<poll_id>\d+)/$', 'detail'),
    url(r'^(?P<poll_id>\d+)/results/$', 'results'),
    url(r'^(?P<poll_id>\d+)/vote/$', 'vote'),
)

ヘルプ?

4

3 に答える 3

1

の URL パターンがないようです/static。そのため、static/admin/css/base.cssURL はどのパターンにも一致しないため、404 が返されます。次のようにしてみてください。

from django.conf.urls.static import static

# ...
urlpatterns = patterns('',
# ...
                       url(r'^static/(?P<path>.*)$', 'django.views.static.serve',
                           {'document_root': settings.STATIC_ROOT}),
# ...

これでうまくいくはずです -- にアクセスする/static/foo.cssと、CSS が表示されます。

これは本番環境では推奨されないことに注意してください。ただし、チュートリアル アプリの場合は機能します。

于 2012-07-04T01:50:18.757 に答える
0

staticfiles アプリはrunserver、静的ファイルを自動的に提供するカスタム管理コマンドを提供します。設定に次のものがありますか?

INSTALLED_APPS = (
    # ...
    'django.contrib.staticfiles',
)

collectstatic運用環境では、すべての静的メディアを見つけてダンプする管理コマンドを使用しますSTATIC_ROOT(これがこの設定の唯一の目的であり、開発中には使用または必要ありません)。

于 2012-07-04T03:43:54.750 に答える
0

あなたがそれを理解してくれてうれしいです。このように機能する理由は次のとおりです。

django.contrib.staticfilesrunserver静的ファイルが自動的に提供されるように、管理コマンドをオーバーライドします。静的ファイルを提供するために django を使用してはならないことを人々に思い出させるために、これは の場合にのみ発生DEBUG = Trueします。

オーバーライドされた管理コマンドのドキュメントで--insecureは、設定の状態に関係なく、フラグを使用してこれを機能させることができると説明していますDEBUG

于 2012-07-23T23:49:08.093 に答える