Ubuntu16.04下启动Django开发服务器遇TypeError错误求助
Django include() 报 TypeError 问题解决办法
嘿,你这个问题我之前也碰到过,是Django版本升级带来的用法变化导致的!你在Ubuntu16.04+Python3.5.2+Django2.0.2的环境下,执行python manage.py runserver启动服务器时,触发的TypeError: include() got an unexpected keyword argument 'app_name'错误,根源就在你项目根目录/home/mydj/mysite/mysite/urls.py里的这行代码:
url(r'^blog/',include('blog.urls', namespace='blog', app_name='blog')),
问题原因
从Django 2.0开始,include()函数不再支持直接传入app_name参数了——这个应用名称的配置,需要放在被包含的子URL配置文件(也就是blog/urls.py)中,而不是在主urls.py的include调用里。
解决步骤
1. 修改项目根目录的urls.py
把include()里的app_name参数移除,只保留namespace即可:
from django.conf.urls import url, include from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^blog/', include('blog.urls', namespace='blog')), ]
2. 配置blog应用的urls.py
找到你的blog应用下的urls.py文件(路径一般是/home/mydj/mysite/blog/urls.py),在文件最开头添加app_name变量,指定应用的名称:
from django.conf.urls import url from . import views # 新增这行,定义应用名称 app_name = 'blog' urlpatterns = [ # 这里是你的blog应用具体的URL规则,比如: url(r'^$', views.index, name='index'), # 其他URL配置... ]
这样调整后,再重新运行python manage.py runserver,应该就能正常启动开发服务器,不会再报错啦!
内容的提问来源于stack exchange,提问作者nanlylee
相关产品推荐
相关产品推荐

