Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Django RedirectView与命名的动态url一起使用_Django_Url_Redirect - Fatal编程技术网

将Django RedirectView与命名的动态url一起使用

将Django RedirectView与命名的动态url一起使用,django,url,redirect,Django,Url,Redirect,我可以做到以下几点: 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的配置。谢谢。嗨,我遇到了一个类似的问题,我想在维护kwargs的同时

我可以做到以下几点:

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的配置。谢谢。

嗨,我遇到了一个类似的问题,我想在维护kwargs的同时动态重定向

在我有一个类似于:/league/competition name/video的url之前,我希望所有这些请求都重定向到/league/competition name/all video

在my url.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'
),

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

问题是什么??问题是什么?如何重定向>url(r'^video/(?P[-\w]+)$),video.as_view(),name=“video\u detail”),为什么它们都有相同的名称?
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'
),
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)