阿豪要卷死我 2022-02-23 02:03 采纳率: 50%
浏览 244
已结题

带参数的命名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

  • 写回答

3条回答 默认 最新

  • 我啊,你啊 2022-02-24 18:49
    关注

    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'命名空间

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月4日
  • 已采纳回答 2月24日
  • 修改了问题 2月23日
  • 赞助了问题酬金5元 2月23日
  • 展开全部

悬赏问题

  • ¥15 宇视监控服务器无法登录
  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)