2011-07-21 74 views
3

我刚刚为我正在开发的网站启动了一个新的开发服务器,而且我似乎无法让Django开发服务器提供我用于CSS的静态文件,其他事情。管理网站的CSS加载正常。我在virtualenv沙盒中运行它。Django在使用开发服务器时不会提供静态文件

在settings.py我搞砸了MEDIA_ROOT和MEDIA_URL。

到目前为止MEDIA_ROOT我试过了。

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

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

下面是我尝试访问该页面时来自dev服务器的输出。

[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'), 
) 

这里是我的settings.py settings.py

一切工作有/媒体在生产服务器上罚款?成为css和其他东西的网址。

也没有显示数据库中的任何内容。该网站的每个页面都使用base.html和viewname.html创建。只有base.html部分出现。我相信这是另外一个问题的话题。

我看过一大堆其他职位与人有同样的问题,他们都没有提供解决方案。我完全难倒了。

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

+0

Tryputting一个'/'你'MEDIA_ROOT'的末日,因为那是我有什么,但我不记得,如果它是重要的或者不是。自从我不得不建立一个新项目以来,这已经有一段时间了。 –

+0

我试过了,它没有工作。 – thebeagle

+0

add'{'document_root':settings.MEDIA_ROOT,'show_indexes':True}'看看你是否可以导航到目录。你得到404错误? –

回答

3

您试图通过访问您的静态文件“/静态/”而不是“/媒体/”,因为在你的意见,你说:

"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 

要么你访问这样的说法:

"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 

然后你相应地在你的模板中设置你的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}) 
) 

我会选择第二个,并会设置settings.STATIC_FILE为您通常使用MEDIA_ROOT上传/下载内容。

+0

当我用不同的设置玩弄时,静态部分是一个搞砸的东西。它现在读取 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 – thebeagle

1

这个问题必须在你的urls.py,因为AppendSlashMiddleware - 这是什么导致重定向到以斜线结尾的URL - 只有在URL根本不匹配时才会启动,显示它应该匹配。

愚蠢的问题,但你确定DEBUG是真的吗?你能显示其余的urls.py吗?你确定这是主要的urls.py,而不是另一个包含的?

编辑 OK,这是很难说没有看到你的radio.frontend.urls文件,但它看起来像发生了什么事是,所有的网址正在对匹配 - 因为你用r'^'包括它,它匹配的一切,在aomething该文件也过于笼统。你可能想分解第一个urlpattern,并把包含在之后的静态位。

+0

我将urls.conf添加到主文章 – thebeagle

+0

DEBUG设置为true。我将发布一个链接到我的settings.py。 – thebeagle

+0

它没有工作 – thebeagle

3

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

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

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

STATICFILES_DIRS

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" /> 

这应该是足够的发展env./server。无需在urls.py中配置任何内容。

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

+0

问题是在poduction服务器上MEDIA_ROOT工作的很好,我不想去浏览所有的模板,并将静态改为媒体,还有一些需要MEDIA_ROOT使用的图像。 – thebeagle

+0

你认为我应该通过我所有的代码,并更改mEDIA静态 – thebeagle

+0

@thebeagle也许你的静态url和媒体根可以是相同的? –

1

对于开发服务器

  1. 请在Django的根静态文件夹
  2. 此加入settings.py中的STATIC_DIRS('assets','静态文件夹的路径')
  3. 将资源放入先前创建的静态文件夹中的相应文件夹中
  4. 然后运行python manage.py collectstatic。这将创建一个管理员和资产与你已经把
  5. 在模板资产Django的根文件夹中添加{%负载静态%}在顶部
  6. 对于链路中使用{%静态“资产/ path_to_resources_as_added_in_the_static_folder” %}

这对我的作品

相关问题