【问题标题】:django: reverse() fails when passing extra options to view functiondjango:将额外选项传递给查看函数时,reverse() 失败
【发布时间】:2022-07-07 16:37:16
【问题描述】:

我正在努力解决 Django 的一个恼人错误,我正在尝试一个 reverse() 将元数据作为 Python 字典传递(我正在关注文档,但它不起作用,你能帮我弄清楚我在做什么吗?失踪了?)

这是我的 urlpattern(如您所见,我正在将额外的选项传递给我的视图函数,如 described in the docs):

from django.urls import path
from . import views

urlpatterns = [
    ...,
    path("items/<int:item_id>", views.item_page, { 'message': None }, name="item page")
]

在我的 views.item_page 函数中,我有这个: 作为

...

reversed_url = reverse("item page", kwargs={'item_id': item_id, 'message': 'hello'} )

return HttpResponseRedirect(reversed_url)

我遇到了这种错误:

Django Version:     4.0.4
Exception Type:     NoReverseMatch
Exception Value:    Reverse for 'item page' with keyword arguments '{'item_id': 2, 'message': 'hello'}' not found. 1 pattern(s) tried: ['items/(?P<item_id>[0-9]+)\\Z']

倒车时好像不接受“message”参数。

【问题讨论】:

    标签: python django


    【解决方案1】:

    reverse 将只接受存在于urlpattern 中的参数 在你的模式中没有message **如果你想发送消息** 你可以在 django 中使用messages 模块

    from django.contrib import messages 
    
    # in View
    messages.success(request, 'Hello')
    ...
    

    查看Sending messages的文档

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-10
      • 1970-01-01
      • 2016-06-08
      相关资源
      最近更新 更多