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

带参数的命名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 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 Centos / PETSc / PETGEM