这几天打算参考<<Python编程从入门到实践>>这本书做一个Django网站,发现书中使用的Django版本为1.11
但是,做为一个铁头怪,当然是用新不用旧,于是我安装了Django2.1.7…
然后不出意外的报了一大堆错…
因为Django2.0之后要使用Django.urls.path函数,所以我将urls.py改成了这样:
learning_log\urls.py
from django.contrib import admin
# from django.conf.urls import include, url
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('learning_logs.urls')),
# url(r'^admin/', include(admin.site.urls)),
# url(r'', include('learning_logs.urls', namespace='learning_logs')),Django2.0使用django.urls.path
]
learning_logs\urls.py
from django.urls import path, include
from . import views
urlpatterns = [
# url(r'^$', views.index, name='index'),
path('', views.index, name='index')
]
运行之后报错…
虽然早就料到会报错,但没想到会在模板里报错.
既然出现问题,那就想办法解决问题呗.
先翻译一下错误信息(英语渣):
不是注册的命名空间??
猜测错误可能和urls.py文件有关,
但毕竟是新手,两眼一抹黑怎么改bug,于是百度…(这里就不说过程了,感觉有点跑题)
首先要修改learning_log\urls.py
from django.contrib import admin
# from django.conf.urls import include, url
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('learning_logs.urls', namespace='learning_logs')),
# url(r'^admin/', include(admin.site.urls)),
# url(r'', include('learning_logs.urls', namespace='learning_logs')),Django2.0使用django.urls.path
]
但只加入namespace会报错,必须在learning_logs\urls.py中定义变量app_name才行
learning_logs\urls.py
from django.urls import path, include
from . import views
urlpatterns = [
# url(r'^$', views.index, name='index'),
path('', views.index, name='index')
]
app_name = 'learning_logs'
问题解决!
溜了溜了,继续踩坑~