使用开发服务器时 Django 不会提供静态文件

2024-02-28

我刚刚为我正在开发的网站启动了一个新的开发服务器,但我似乎无法让 Django 开发服务器来提供 CSS 和其他内容的静态文件。管理站点的 CSS 加载良好。我在 virtualenv 沙箱中运行它。

在 settings.py 中,我搞乱了 MEDIA_ROOT 和 MEDIA_URL。

到目前为止,我已经尝试过 MEDIA_ROOT 。

MEDIA_ROOT = '/home/wluw/wluw/wluw/media'

and

MEDIA_ROOT = os.path.join(os.path.dirname(__file__), 'media')

我将 ADMIN_MEDIA_PREFIX 更改为

ADMIN_MEDIA_PREFIX = '/admin_media/'

我的 MEDIA_URL 看起来像这样

MEDIA_URL = '/media/'

静态文件的 urls.py 部分如下所示。

if settings.DEBUG:
urlpatterns += patterns('',
     (r'^media/(?P<path>.*)$', 'django.views.static.serve',         
     {'document_root': settings.MEDIA_ROOT}),
)

这是我尝试访问该页面时开发服务器的输出。

[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})
)

这是我的 radio.frontend.urls

from django.conf.urls.defaults import *


urlpatterns = patterns('radio.frontend.views',
    url(r'^$', 'home', name='home'),
)

这是我的设置.py设置.py http://pastebin.com/JTWAJFCz

在具有 /media 的生产服务器上一切正常?是 css 和其他东西的 url。

此外,数据库中的任何内容都没有显示。站点的每个页面都是使用 base.html 和 viewname.html 创建的。仅显示 base.html 部分。我确信这是另一个问题的主题。

我看过很多其他人有同样问题的帖子,但他们都没有提供解决方案。我完全被难住了。

任何帮助将不胜感激。谢谢


在 Django 1.3 中MEDIA_ROOT and MEDIA_URL用于配置用户上传的物理位置。

对于静态文件,您应该使用STATIC_URL:

STATIC_URL = '/static/' # URL prefix for static files.

and 静态文件目录:

PROJECT_DIR = os.path.dirname(__file__)

# Additional locations of static files
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    os.path.join(PROJECT_DIR, 'static'),
)

还要确保你有STATICFILES_FINDERS配置。

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

在模板中,您可以使用 STATIC_URL 变量来访问静态文件的位置:

<link href="{{ STATIC_URL }}css/style.css" rel="stylesheet" type="text/css" />

这对于开发环境/服务器来说应该足够了。无需在 urls.py 中配置任何内容。

有关更多信息,您可以访问官方 django 文档站点,描述如何管理静态文件:https://docs.djangoproject.com/en/dev/howto/static-files/ https://docs.djangoproject.com/en/dev/howto/static-files/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用开发服务器时 Django 不会提供静态文件 的相关文章

随机推荐