带参数的命名URL配置中反向解析报错:Reverse for 'ny' not found. 'ny' is not a valid view function or pattern name.

带参数的命名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时报错如下:

img

当name输入其他时报错如下:

img

from django.contrib import admin
from django.urls import include, path
from myapp import views

urlpatterns = [
path('ny/int:year/int:month/',views.ny,name='ny')
]
这一行加上name='ny'命名空间

ny视图函数没有绑定到路由

是页面请求时,模板页面中定义的ny没有找到对因的地址。
views.py 这个文件中需要加个命名空间,类似于这样

img


然后,这里

img


不要只是{% url 'ny' %},你应该使用{% url 'appname:ny' %}