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

带参数的命名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日
  • 展开全部

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格