1

独自の静的ファイル フォルダーを持つインストール済みのアプリ (django_tables2) がありますが、{{ STATIC_URL }}. django docs を読んだ後、実行すると

>>> python manage.py findstatic django_tables2/themes/paleblue/css/screen.css

findstatic は実際、site-packages の apps ディレクトリ内で一致する 1 つのファイルを正しく見つけます。

問題のページのテンプレートには次のものが含まれています。

{% block extrahead %}
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}django_tables2/themes/paleblue/css/screen.css" />
{% endblock %}

また、関連するブロックが親テンプレートに存在します。

このページは で提供されていhttp://127.0.0.1:8000/todo/product_groups/Analytical/ます。ただし、開発サーバーを実行すると、間違った場所を指しているため、css の 404 が表示されます。

GET /todo product_groups/Analytical/django_tables2/themes/paleblue/css/screen.css HTTP/1.1 404 2942

何が起こっているのですか? サーバー{{ STATIC_URL }}が findstatic と同じように動作しないのはなぜですか? URL の再設計を行う前に、これと同じ static_url css が機能していましたが、新しいデザインでは機能しないようです。どんな助けや洞察も大歓迎です。

settings.py からの関連スニペット:

MEDIA_URL = '/media/'
STATIC_ROOT = 'C:/Users/riedldar/Documents/Code/Arclin/static/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    "C:/users/riedldar/Documents/Code/Arclin/Arclin/static",
)
INSTALLED_APPS = ( 
....
'django.contrib.staticfiles',)

# Required for tables2
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.contrib.messages.context_processors.messages",
"django.core.context_processors.request",
)

STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)

urls.py から:

from django.conf.urls import patterns, include, url
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'Arclin.views.home', name='home'),
# url(r'^Arclin/', include('Arclin.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)),

# Todo/Task manager
url(r'^todo/', include('todo.urls')),

# Login/out
url(r'^login/$', 'django.contrib.auth.views.login'),
url(r'^logout/$', 'Arclin.views.logout_page'),

# User Homepage
url(r'^$', 'todo.views.user_home'),

# 
)

と todo\urls.py

from django.conf.urls.defaults import *
#from models import ProductGroup

urlpatterns = patterns('',
    (r'^product_groups/([\w-]+)/$', 'todo.views.items_by_product_group'),
    url(r'^task/(?P<task_id>\d{1,6})$', 'todo.views.view_task',  name='todo_task_detail')
    )
4

1 に答える 1

0

todo.views.items_by_product_groupテンプレートを RequestContext でレンダリングしている、またはそれを含むショートカットまたは汎用ビューのいずれかを使用しているか? そうでない場合、テンプレート コンテキスト プロセッサはSTATIC_URL、ページ コンテキストなどの変数を追加するために適用されず、記述している動作が発生します。

余談ですが、Django 1.4 では新しいテンプレート タグが導入されました。これにより、コンテキストから{% static '…' %}必要なく静的ファイルを参照できます。STATIC_URLこれを使用することで、この問題も防ぐことができます (ただし、RequestContext が欠落しているかどうか、または欠落している理由を調査することをお勧めします。これは通常、バグです)。

于 2012-07-20T01:53:43.460 に答える