【问题标题】:Use Django RedirectView with a named url dynamic使用带有命名 url 动态的 Django RedirectView
【发布时间】:2013-05-09 09:47:58
【问题描述】:

因为我可以做到以下几点:

My url config
url(r'^video/show/(?P<slug>[-\w]+).html$', VideoDetail.as_view(), name="video_detail"),
to:
url(r'^video/(?P<slug>[-\w]+)$', Video.as_view(), name="video_detail"),

第一个是当前 url,我想使用重定向到第二个 url 配置。

class VideoRedirectView(RedirectView):
    permanent = True
    query_string = True

    def get_redirect_url(self, slug):
        video = get_object_or_404(Video, slug__exact=self.kwargs['slug'])
        video.update_counter()
        return reverse('video_detail', args=(slug,))

因为我可以将其传递给 url 的配置。谢谢。

【问题讨论】:

  • 问题是什么??有什么问题??
  • 如何重定向 > url(r'^video/(?P[-\w]+)$', Video.as_view(), name="video_detail"),跨度>
  • 为什么他们都同名?

标签: django url redirect


【解决方案1】:

您好,我有一个类似的问题,我想动态重定向,同时保持 kwargs。

在我有这样的网址之前:/league/competition-name/video 我希望所有这些请求都重定向到 /league/competition-name/all-video

在我的 urls.py 中

url(
    r'^league/(?P<competition>[0-9A-Za-z-]+)/(?P<tab>all-video|latest-news)/$',
    views.TabbedView.as_view(),
    name='competition'
),
url(
    r'^league/(?P<competition>[0-9A-Za-z-]+)/(?P<tab>video|latest)/$',
    views.TabbedPageRedirectView.as_view(),
    name='competition-redirect'
),

然后在我的views.py中

from django.views.generic.base import RedirectView

class TabbedPageRedirectView(RedirectView):
permanent = True
query_string = True


def get_redirect_url(self, *args, **kwargs):
    if kwargs['tab'] == 'latest':
        kwargs['tab'] = 'latest-news'
    if kwargs['tab'] == 'video':
        kwargs['tab'] = 'all-video'

    path = self.request.path
    path = path.replace('latest', 'latest-news')
    path = path.replace('video', 'all-video')

    self.url = path

    return super(TabbedPageRedirectView, self).get_redirect_url(*args, **kwargs)

诀窍是从 self.request.path 构建 self url。我没有在 urls.py 文件中找到这样做的方法

【讨论】:

    猜你喜欢
    • 2012-04-29
    • 2019-04-04
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 2016-08-23
    相关资源
    最近更新 更多