【问题标题】:reverse urls for Django class based view基于 Django 类的视图的反向 url
【发布时间】:2012-01-25 13:08:59
【问题描述】:

我正在尝试做类似的事情:

在 urls.py 中:

...
url(r'^(?P<pk>\d+)/$', VideoDetailView.as_view(), name='video_detail', kwargs={'foo:''})
...

在views.py中

..
HttpResponseRedirect(reverse('video_detail', kwargs={'pk': id, 'foo':'bar'}))
...

但这似乎不起作用。我得到一个 使用参数“()”和关键字参数“{'pk':13240L,'foo':'bar}'未找到'video_detail'。

但是这确实有效:

....
HttpResponseRedirect(reverse('video_detail', kwargs={'pk': id}))
...

即。从反向调用中删除 foo: bar 。执行此操作并在反向 url 中传递额外参数的正确方法是什么?

【问题讨论】:

    标签: django django-views django-urls django-class-based-views


    【解决方案1】:

    reverse 是一个创建 URL 的函数。

    因为您在 URL 模式中仅指定了 pk 模式,所以您只能使用 pk 作为 reverse 的参数(添加 foo 确实没有意义,因为生成的 url 正是任何foo 值都相同)。您可以将foo 添加到 URL 模式或创建多个命名 url,即:

    url(r'^(?P<pk>\d+)/$', VideoDetailView.as_view(), name='video_detail', kwargs={'foo':''})
    url(r'^(?P<pk>\d+)/$', VideoDetailView.as_view(), name='video_detail2', kwargs={'foo':'bar'})
    

    url(r'^(?P<pk>\d+)/(?P<foo>\w+)/$', VideoDetailView.as_view(), name='video_detail')
    

    【讨论】:

      猜你喜欢
      • 2012-01-25
      • 2017-11-03
      • 2012-12-28
      • 2012-11-18
      • 1970-01-01
      • 2014-01-22
      • 1970-01-01
      • 2018-02-20
      • 1970-01-01
      相关资源
      最近更新 更多