【问题标题】:Django Reverse with arguments '(5,)' not found找不到带有参数“(5,)”的Django Reverse
【发布时间】:2020-05-19 04:46:08
【问题描述】:

我创建了一个接受 3 个参数的视图,但在主页中出现以下错误。

找不到带有参数“(5,)”的“应用程序详细信息”。尝试了 1 种模式:['(?P[0-9]+)/devices/(?P[^/]+)$']

urlpatterns = [
    path('',views.MapView,name='home'),
    path('map/',views.MapView,name='map'),
    path('<int:application_id>/devices/<cat>', views.ApplicationDetail, name='application-detail'),
]

查看:

def ApplicationDetail(request, application_id,cat):
        device = Device.objects.all().filter(category=cat)
        data = serializers.serialize('json', device)
        return HttpResponse(data, content_type='application/json')

【问题讨论】:

  • 错误发生在哪里?你在代码的某处使用了reverse 方法,对吧?
  • 尝试在您的 url 定义末尾添加 /
  • 你点击的网址是什么?
  • @Andd 它没有发生在您的基本模板中。您在其他地方使用类似 {% 'application-detail' ... 的东西,并且您传递的 ID 是一个元组而不是单个整数。
  • 你忘了传递cat{% url 'applications:application-detail' application.id cat %}cat 是你的类别(idk 你是如何在模板中命名的)

标签: python django django-views


【解决方案1】:

您很可能在代码中的某处调用reverse 函数,例如:

reverse('application-detail', args=(5))

但是,reversepath 有两个参数,一个 int (application_id) 和一个 string (cat),因此,在调用反向时,您还必须提供 @987654329 @,例如:

reverse('application-detail', args=(5, 'super cat`))

【讨论】:

    猜你喜欢
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    相关资源
    最近更新 更多