python – urls.py重定向与URL反转和参数 – 有更简单的方法吗?

python – urls.py重定向与URL反转和参数 – 有更简单的方法吗?,第1张

概述给定两类实体,我选择了一些具有以下URL定义的交叉产品集: url(r"^category1/(?P<category1>([0123456789]+,?)+)/category2(?P<category2>([0123456789]+,?)+)/$", view, {}, name="cross") 所以基本上像/ category1 / 1,2,3,4 / category2 / 5,6,7, 给定两类实体,我选择了一些具有以下URL定义的交叉产品集:

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反转和参数 – 有更简单的方法吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1196516.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存