url(r"^category1/(?P<category1>([0123456789]+,?)+)/category2(?P<category2>([0123456789]+,?)+)/$",vIEw,{},name="cross")
所以基本上像/ category1 / 1,2,3,4 / category2 / 5,6,7,8 /这样的URL是有效的.
现在我在相同的数据上引入了几个视图,所以现在我有像/ category1 / 1,8 / vIEw1 /和/ category1 / 1,3这样的URL,4 /类别2 / 5,8- /视图2 /.我想将“旧”网址重定向到vIEw1.我没有找到比这更容易的东西:
url(r"^category1/(?P<category1>([0123456789]+,redirect_to,{ 'url': lazy(lambda: reverse( 'cross_vIEw1',kwargs={ 'category1': '111111','category2': '222222',} ).replace('111111','%(category1)s') \ .replace('222222','%(category2)s'),str)(),name="cross"}
这里的要点是我想在URL中重用我匹配的组,但是,我不能将它们作为kwargs给redirect_to,因为它们不会被插值,也不能在URL中放入逐字格式,因为它必须匹配我的正则表达式(以逗号分隔的数字ID).所以我介绍一些独特的ID(在这种情况下为111111和222222)并在之后替换它们.
显然,这种感觉,外观,气味和味道非常黑客.有没有更简洁的方法来做到这一点,除了引入一个额外的视图和完全跳过redirect_to?
解决方法 你有一些选择.你可以使用RedirectVIEw,但我无法让它反转url,因为它看起来像在urlpatterns加载之前运行.您可以像这样使用它,定制它以在您的项目中使用:from django.vIEws.generic import RedirectVIEw
将其添加到您的urlpatterns:
url(r'^(?P<location_ID>\d+)/$',RedirectVIEw.as_vIEw(url='/statistics/dailyreport/%(location_ID)s/')),
使用LAMBDA:这应该适用于django的大多数版本,我在1.6.5中使用它:
from django.core.urlresolvers import reversefrom django.@R_403_6822@ import @R_403_6822@ResponseRedirecturlpatterns = patterns('',.... url(r'^(?P<location_ID>\d+)/$',lambda x,location_ID: @R_403_6822@ResponseRedirect(reverse('dailyreport_location',args=[location_ID])),name='location_stats_redirect'),....)总结
以上是内存溢出为你收集整理的python – urls.py重定向与URL反转和参数 – 有更简单的方法吗?全部内容,希望文章能够帮你解决python – urls.py重定向与URL反转和参数 – 有更简单的方法吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)