带参数的命名URL配置中反向解析报错。
ulrs中的代码:
from django.contrib import admin
from django.urls import include, path
from myapp import views
urlpatterns = [
path('admin/', admin.site.urls),
#指定URL和视图函数的对应关系
path('myapp/',include('myapp.urls')),
path('hello/',views.hello),
path('ny/<int:year>/<int:month>/',views.ny),
path('name/<str:username>/',views.name,name='name'),
]
views.py中的代码:
#由于在配置项中定义了两个URL参数,所以视图函数要加上这两个参数
def ny(request,year,month):
#参数都是int类型,需要转化成字符类型
year1 = str(year) + '年'
month1 = str(month) + '月'
#通过render()函数向ny.html模板文件传递变量year和month
return render(request,'ny.html',{'year':year1,'month':month1})
#定义视图函数name(),并增加一个参数usernam
def name(request,username):
if username == 'Tom':
#反向解析出地址,并通过redirect()转向这个地址
#通过args向URL传递参数值
return redirect(reverse('ny',args=(2022,2,)))
else:
welcome = '欢迎您,'+ username
return render(request,'name.html',{'welcome':welcome})
ny.html代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div align="center">
<h2>带参数URL测试</h2>
<hr>
<!--传入变量year和month,名字与视图函数render()传递变量名要一致 }}-->
<p>URL传入参数:1是{{ year }},2是{{ month }}</p>
</div>
</body>
</html>
name.py中的代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div align="center">
<h2>命名url测试</h2>
<hr>
<p>{{ welcome }}</p>
<!-- href值解析为/name/胡汉三/ -->
<p><a href="{% url 'name' '胡汉三' %}">胡汉三回来了</a></p>
<!--href值解析为/ny/2022/2/-->
<a href="{% url 'ny' 2022 2 %}">显示年月的页面</a>
</div>
</body>
</html>
运行结果及报错内容 如下:
当name输入Tom时报错如下:
当name输入其他时报错如下: