the*_*gle 5 css django django-templates django-views
我刚刚为我正在开发的网站启动了一个新的开发服务器,我似乎无法让 Django 开发服务器为我拥有的用于 CSS 和其他东西的静态文件提供服务。管理站点的 CSS 加载良好。我在 virtualenv 沙箱中运行它。
在 settings.py 中,我弄乱了 MEDIA_ROOT 和 MEDIA_URL。
到目前为止,我已经尝试过 MEDIA_ROOT。
MEDIA_ROOT = '/home/wluw/wluw/wluw/media'
Run Code Online (Sandbox Code Playgroud)
和
MEDIA_ROOT = os.path.join(os.path.dirname(__file__), 'media')
Run Code Online (Sandbox Code Playgroud)
我将 ADMIN_MEDIA_PREFIX 更改为
ADMIN_MEDIA_PREFIX = '/admin_media/'
Run Code Online (Sandbox Code Playgroud)
我的 MEDIA_URL 看起来像这样
MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)
静态文件的 urls.py 部分如下所示。
if settings.DEBUG:
urlpatterns += patterns('',
(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT}),
)
Run Code Online (Sandbox Code Playgroud)
这是我尝试访问页面时开发服务器的输出。
[21/Jul/2011 21:19:25] "GET /media/css/style.css HTTP/1.1" 302 0
[21/Jul/2011 21:19:25] "GET /media/css/style.css/ HTTP/1.1" 404 2561
from django.conf.urls.defaults import patterns, include, handler500, handler404
from django.conf import settings
from django.contrib import admin
import d51_django_admin_piston
handler500 = 'radio.frontend.views.server_error'
admin.autodiscover()
d51_django_admin_piston.autodiscover(admin.site)
urlpatterns = patterns(
'',
(r'^logs/', include('radio.logs.urls')),
(r'^events/', include('radio.events.urls')),
(r'^station/', include('radio.station.urls')),
(r'^staff/', include('radio.staff.urls')),
(r'^admin/', include(admin.site.urls)),
(r'^accounts/login/$', 'django.contrib.auth.views.login'),
(r'^', include('radio.frontend.urls')),
)
if settings.DEBUG:
urlpatterns += patterns('',
(r'^media/(?P<path>.*)$', 'django.views.static.serve',
# {'document_root': settings.MEDIA_ROOT}),
{'document_root': settings.MEDIA_ROOT, 'show_indexes': True})
)
Run Code Online (Sandbox Code Playgroud)
这是我的 radio.frontend.urls
from django.conf.urls.defaults import *
urlpatterns = patterns('radio.frontend.views',
url(r'^$', 'home', name='home'),
)
Run Code Online (Sandbox Code Playgroud)
这是我的 settings.py settings.py
在具有 /media 的生产服务器上一切正常?是 css 和其他东西的网址。
也没有显示数据库中的任何内容。站点的每个页面都使用 base.html 和 viewname.html 创建。仅显示 base.html 部分。我相信这是另一个问题的主题。
我看过很多其他人有同样问题的帖子,但没有一个提供解决方案。我完全被难住了。
任何帮助将不胜感激。谢谢
您正在尝试通过“/static/”而不是“/media/”访问静态文件,因为您在评论中说:
"GET /static/css/style.css HTTP/1.1" 302 0 [21/Jul/2011 21:13:31] "GET /static/css/style.css/ HTTP/1.1" 404
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式访问它:
"GET /media/css/style.css HTTP/1.1" 302 0 [21/Jul/2011 21:13:31] "GET /media/css/style.css/ HTTP/1.1" 404
Run Code Online (Sandbox Code Playgroud)
然后您在模板中相应地设置 URL。
或者,您可以这样设置路由:
if settings.DEBUG:
urlpatterns += patterns('',
(r'^static/(?P<path>.*)$', 'django.views.static.serve',
# {'document_root': settings.MEDIA_ROOT}),
{'document_root': settings.MEDIA_ROOT, 'show_indexes': True})
)
Run Code Online (Sandbox Code Playgroud)
我将选择第二个,并settings.STATIC_FILE按照您通常用于MEDIA_ROOT上传/下载内容的方式进行设置。