Python 如何在Django中使用url.py中的变量重定向url模式?
我想用Python 如何在Django中使用url.py中的变量重定向url模式?,python,django,django-urls,url-redirection,Python,Django,Django Urls,Url Redirection,我想用url.py中的变量重定向url模式 我引用了,但我不知道url什么时候会有下面的代码这样的变量 from django.conf.urls import patterns, url from django.views.generic import RedirectView urlpatterns = patterns( url( r'^permalink/(?P<id>\d+)/foo/$', RedirectView.as_vie
url.py
中的变量重定向url模式
我引用了,但我不知道url什么时候会有下面的代码这样的变量
from django.conf.urls import patterns, url
from django.views.generic import RedirectView
urlpatterns = patterns(
url(
r'^permalink/(?P<id>\d+)/foo/$',
RedirectView.as_view(url='/permalink/(?P<id>\d+)/')
),
)
来自django.conf.url导入模式,url
从django.views.generic导入重定向视图
urlpatterns=模式(
网址(
r“^permalink/(?P\d+)/foo/$”,
RedirectView.as_视图(url='/permalink/(?P\d+/))
),
)
使用此代码,django将/permalink/1/foo/
重定向到/permalink/(?p\d+)/
,而不是/permalink/1/
有没有不使用views.py的解决方案
当然,我知道使用控制器的解决方案,但我想知道使用url模式是否有更简单的解决方案。将url='/permalink/(?p\d+/”
传递到重定向视图
将不起作用,因为视图不会替换url中的命名参数
但是,RedirectView
允许您提供要重定向到的url,而不是url
。使用为原始视图传递的相同参数和KWARG反转url
这将在您的情况下起作用,因为两种url模式都有一个命名参数,id
urlpatterns = [
url(r'^permalink/(?P<id>\d+)/foo/$',
RedirectView.as_view(pattern_name="target_view"),
name="original_view"),
url(r'^permalink/(?P<id>\d+)/$', views.permalink, name="target_view"),
]
最好将QuerystringRedirect
放在视图模块中。然后,将视图添加到url模式中,如下所示:
urlpatterns = [
url(r'^permalink/$', views.QuerystringRedirect.as_view(), name="original_view"),
url(r'^permalink/(?P<id>\d+)/$', views.permalink, name="target_view"),
]
urlpatterns=[
url(r“^permalink/$”,views.QuerystringRedirect.as\u view(),name=“original\u view”),
url(r'^permalink/(?P\d+/$),views.permalink,name=“target_view”),
]
urlpatterns = [
url(r'^permalink/$', views.QuerystringRedirect.as_view(), name="original_view"),
url(r'^permalink/(?P<id>\d+)/$', views.permalink, name="target_view"),
]