同名但不同regexp的Django URL
我有以下类型的URL:同名但不同regexp的Django URL,django,url,reverse,Django,Url,Reverse,我有以下类型的URL: /city/ /city/category/ /city/category/subcategory/ 所有URL都由一个视图处理。有没有一种方法可以对这些URL使用相同的名称,然后使用如下标记: {%url'city\u index'city.slug%}, {%url'city\u index'city.slug category.slug%}, {%url'city_index'city.slug category.slug subcategory.slu
/city/
/city/category/
/city/category/subcategory/
所有URL都由一个视图处理。有没有一种方法可以对这些URL使用相同的名称,然后使用如下标记:
{%url'city\u index'city.slug%}
,{%url'city\u index'city.slug category.slug%}
,{%url'city_index'city.slug category.slug subcategory.slug%}
我试过这个:
url(r'^(?P<city_slug>[\w\-]+)/$',
'real_city_index',
name='city_index'
),
url(r'^(?P<city_slug>[\w\-]+)/(?P<category_slug>[\w\-]*)/{0,1}$',
'real_city_index',
name='city_index'
),
url(r'^(?P[\w\-]+)/$,
“真实城市指数”,
name='city\'u索引'
),
url(r'^(?P[\w\-]+)/(?P[\w\-]*)/{0,1}$',
“真实城市指数”,
name='city\'u索引'
),
但在这种情况下,第二个url反转返回的url不带尾随斜杠
如果你不写
/{0,1}
,像/city/category
这样的URL将不起作用,这比不使用斜杠倒过来更糟糕。有什么好的理由不叫它们“city\u index”、“city\u index\u with_category”和“city\u index\u with_sub\u category”?有什么好的理由不叫它们“city\u index”,“城市索引(含类别)”和“城市索引(含子类别)”?Django对此有何建议。代码的问题在于,您对url的所有name
属性都使用city\u index
。将它们更改为name='city\u index'
,name='city\u category'
和name='city\u subcategory'
,一切都应该正常。所有url模式的视图名称(real\u city\u index
)可以相同。Django对此有自己的定义。代码的问题在于,您对url的所有name
属性都使用city\u index
。将它们更改为name='city\u index'
,name='city\u category'
和name='city\u subcategory'
,一切都应该正常。所有url模式的视图名称(real\u city\u index
)可以是相同的。我不确定是否真正理解您的问题,但如果您不在第二个url的$字符之前添加斜杠,则不会出现斜杠。我不确定是否真正理解您的问题,但是如果不在第二个url的$character前面加上斜杠,就不会有斜杠。所以你认为没有理由对不同的url使用相同的名称吗?上面的代码运行良好。唯一的问题是,颠倒第二个url返回的url末尾没有斜杠。当然,如果没有办法让它工作的话,我可以忽略这一点。我看不出有什么原因,不。你不能一般地定义这些不同的url(出于所有实际目的),所以你还是给它们取不同的名字吧。这将使事物保持干净的分离,因此您不会错误地使用名称和属性的错误组合。用不同的名称命名它们也可以再次使用尾部斜杠。所以你认为没有理由对不同的URL使用相同的名称吗?上面的代码运行良好。唯一的问题是,颠倒第二个url返回的url末尾没有斜杠。当然,如果没有办法让它工作的话,我可以忽略这一点。我看不出有什么原因,不。你不能一般地定义这些不同的url(出于所有实际目的),所以你还是给它们取不同的名字吧。这将使事物保持干净的分离,因此您不会错误地使用名称和属性的错误组合。以不同的方式命名它们还允许再次使用尾部斜杠。