参考Django教学视频做到反向解析步骤时报错。代码如下:
1. 项目总路由 MyBlog/urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('users/', include('users.urls')),
path('', include('blog.urls'))
]
2. 应用子路由 blog/urls.py
urlpatterns = [
path('', views.index, name='index'),
path('test/', views.test, name='test'),
]
3. 应用视图文件 blog/views.py
def index(request):
return redirect(reverse('test')) # 首页重定向
def test(request):
return HttpResponse('test')
报错信息:
NoReverseMatch at /二、解决方案Reverse for 'test' not found. 'test' is not a valid view function or pattern name.
给应用指定一个app_name,并在项目总路由中为include函数配置namespace为应用名称app_name,最后在应用视图文件中使用“应用的namespace:重定向url的name”的格式实现反向解析。修改后的代码如下:
1. 项目总路由 MyBlog/urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('users/', include('users.urls')),
path('', include('blog.urls', namespace='blog'))
]
2. 应用子路由 blog/urls.py
app_name = 'blog' # 定义一个命名空间,用来区分不同应用之间的链接地址
urlpatterns = [
path('', views.index, name='index'),
path('test/', views.test, name='test'),
]
3. 应用视图文件 blog/views.py
def index(request):
return redirect(reverse('blog:test'))
def test(request):
return HttpResponse('test')
修改后的运行结果:
参考链接: django3.0.4反向解析_sugar-CSDN博客一、反向解析的目的当某一个url配置的地址发生变化的时候,页面上使用反向解析生成的地址不需要发生变化,根据url正则表达式的配置生成url二、配置步骤1.在项目的urls文件中包含具体应用的urls文件制定他的namespace,需要注意的是:include()这个函数中是两个参数,一个arg,一个namespace,参数arg是一个元组,元组中一个是地址,一个是app的名字,第二个name...https://blog.csdn.net/weixin_43844838/article/details/105714071


