Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同名但不同regexp的Django URL_Django_Url_Reverse - Fatal编程技术网

同名但不同regexp的Django 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

我有以下类型的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.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(出于所有实际目的),所以你还是给它们取不同的名字吧。这将使事物保持干净的分离,因此您不会错误地使用名称和属性的错误组合。以不同的方式命名它们还允许再次使用尾部斜杠。