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

带参数的命名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 wamp3.3.5安装完成后图标正常显示绿色,鼠标左右键点击图标均无反应。求解决方法。
  • ¥15 鼠标点击的这条记录了什么?
  • ¥15 在写pid调速的程序时,电机始终维持最大速度
  • ¥15 帅锅们,我很想知道这个论坛是用什么模板搭的(T_T)
  • ¥15 请问如何查看手机root记录?
  • ¥15 商城小程序订单号重复
  • ¥15 学校优化算法sbo和蚁群算法怎么结合
  • ¥21 matlab怎么求时域信号的二阶导数
  • ¥15 判断两个表是否完全相同
  • ¥15 java map类型数据格式,如何快速通过前缀匹配元素