Django学习(踩坑),报错'learning_logs' is not a registered namespace,解决方案

这几天打算参考<<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'

问题解决!
在这里插入图片描述

溜了溜了,继续踩坑~

猜你喜欢

转载自blog.csdn.net/qq_44132542/article/details/88747173