我已经从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
文件中,并按照其网站中说明的几个步骤进行操作。