gpt4 book ai didi

python - Django url.py 具有相同正则表达式名称模式的不同 View 函数

转载 作者:太空宇宙 更新时间:2023-11-03 23:50:02 25 4
gpt4 key购买 nike

我正在过滤一些类别(cat1、cat2、cat3)以由不同的 View 呈现,然后由其他 View 函数呈现。每次添加类别段塞时,不断向 urlpatterns 添加类别段段变得很笨拙。我可以通过某种方式将该部分从正则表达式中排除吗?

urlpatterns = patterns('catalog.category_views',
(r'^(?P<cat_slug>(cat1|cat2|cat3))/$', 'universal_category'),
(r'^(?P<cat_slug>(cat1|cat2|cat3))/(?P<subcat_slug>[-\w]+)/$', 'subcat_listing'),
(r'^(?P<cat_slug>(cat1|cat2|cat3))/part/(?P<part>[-\w]+)/$', 'subcat_product'),
)

urlpatterns += patterns('catalog.make_views',
(r'^(?P<cat_slug>[-\w]+)/$', 'category'),
(r'^(?P<cat_slug>[-\w]+)/(?P<make_slug>[-\w]+)/$', 'make'),
(r'^(?P<cat_slug>[-\w]+)/(?P<make_slug>[-\w]+)/(?P<model_slug>[-\w]+)/(?P<year_low>\d{4})-(?P<year_high>\d{4})/$', 'listing'),
(r'^(?P<cat_slug>[-\w]+)/part/(?P<part>[-\w]+)/$', 'product'),
)

最佳答案

我个人会将此逻辑放在 View 中而不是 urlspatterns 中。

我会创建一个所有特殊类别的列表,为此:

special_cats = ['cat1','cat2','cat3']

然后对于你来说你可以做这样的事情:

def generic_cat_view(request, cat_slug):
if cat_slug in special_cats:
return special_view(request, cat_slug)
else:
#generic view

然后当你添加一个新的特殊类别时,你只需要将它添加到那个列表中

关于python - Django url.py 具有相同正则表达式名称模式的不同 View 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2367918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com