当Debug = False时,Django NoReverseMatch

时间:2013-11-19 12:44:22

标签: django

我的django网站运行正常,但是当我设置DEBUG=False时,它会向我发送一封电子邮件,其中包含以下错误:

  

NoReverseMatch:反转' django.views.static.serve'有参数   '('',)'和关键字参数' {}'没找到。

我设置ALLOWED_HOSTS=['*']并且它没有解决。

管理网站运行正常。

有什么想法吗?

修改

经过一番挖掘后,我发现了这个错误:

File "/srv/mysite/myapp/views.py", line 38, in home
    { 'request': request}, context_instance=RequestContext(request))

这是我家的观点:

def home(request):

    return render_to_response('index.html', { 'request': request}, context_instance=RequestContext(request))    

2 个答案:

答案 0 :(得分:0)

为静态文件添加static.serve的想法非常错误。你所做的就是:

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))

STATIC_URL = '/static/'

因此,您可以从http://server_addr/static/{{ STATIC_URL }}模板

中访问您的文件
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'project_dir', 'static'),
)

这会产生ex。 '/ home / mcabra / dev / project / project_dir / static /' - 我的开发静态在这里

STATIC_ROOT = os.path.join(BASE_DIR, '..', 'static')

这是针对生产manage.py collectstatic将修改过的文件从STATICFILES_DIRS复制到STATIC_ROOT(因此它已准备好进行缩小)。

然后使用像Nginx这样的Web服务器来提供来自STATIC_ROOT的静态文件。 Django defult WSGI Web服务器仅用于开发目的。见:Django Gunicorn。

希望我帮助过。

修改
来自(https://docs.djangoproject.com/en/dev/howto/static-files/
“提供文件
除了这些配置步骤之外,您还需要实际提供静态文件。

在开发期间,如果使用django.contrib.staticfiles,当 DEBUG设置为True 时,这将由runserver自动完成(请参阅django.contrib.staticfiles.views.serve())。 “

答案 1 :(得分:0)

你们都是对的,我的静态文件有问题。

我刚刚在urls.py上添加了此代码,并提供了文件。

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

韩国社交协会