从django 1.9升级到django 1.11时出现内部服务器错误

时间:2017-06-29 15:40:22

标签: django django-urls url-pattern django-1.9 django-1.11

我已经从django 1.9升级到django 1.11。

升级后运行python manage.py runserver时由于导入patterns而出错。我意识到这是有道理的,因为patterns被删除了。

所以我改变了我的urls.py

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

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

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

if not settings.DEBUG:
    urlpatterns = [
        url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}),
    ]

通过运行python manage.py runserver它运行正常,但是当它推送到Heroku时,网站会显示内部服务器错误。

我收到此消息:

Internal Server Error: /

TypeError at /
view must be a callable or a list/tuple in the case of include().

只需删除if not settings.DEBUG部分,服务器上的网站加载时没有内部服务器错误,但没有CSS。

是否有导致错误的原因?

解决方案

不幸的是,因为它被标记为重复我无法发布解决方案,所以我在此解释它希望它可以帮助其他人面对同样的问题:

1)正如另一个问题所解释的那样,在较新版本的Django中不允许使用硬编码网址。所以这里的硬编码导致错误。

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

删除后,未找到任何CSS。这是第2步:

2)按照评论中的建议安装WhiteNoise

我只需要安装它:pip install whitenoise。然后将其添加到requirements.txt文件中,并按照其网站中说明的几个步骤进行操作。

0 个答案:

没有答案