Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.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
Django 递归URL模式CMS样式_Django_Django Urls - Fatal编程技术网

Django 递归URL模式CMS样式

Django 递归URL模式CMS样式,django,django-urls,Django,Django Urls,每当我学习一种新的语言/框架时,我总是制作一个内容管理系统 我正在学习Python和Django,我一直致力于创建一个能够选择正确页面的URL模式 例如,对于单级URL模式,我有: url(r'^(?P<segment>[-\w]+)/$', views.page_by_slug, name='pg_slug'), 现在,我不确定是否可以让Django的URL系统带回一份蛞蝓列表: http://localhost:8000/parent/child/grandchild/ 将返

每当我学习一种新的语言/框架时,我总是制作一个内容管理系统

我正在学习Python和Django,我一直致力于创建一个能够选择正确页面的URL模式

例如,对于单级URL模式,我有:

url(r'^(?P<segment>[-\w]+)/$', views.page_by_slug, name='pg_slug'),
现在,我不确定是否可以让Django的URL系统带回一份蛞蝓列表:

http://localhost:8000/parent/child/grandchild/
将返回父母、孩子、孙子孙女

那么这是Django已经做过的事情吗?或者我是否修改了我的原始URL模式以允许斜杠并在那里提取URL数据


提前感谢您的帮助。

这是因为您的正则表达式不允许使用中间的“/”字符。url段模式的递归定义可能是可能的,但无论如何,它将作为块传递给视图函数

试试这个

url(r'^(?P<segments>[-/\w]+)/$', views.page_by_slug, name='pg_slug'),
url(r'^(?P[-/\w]+)/$,views.page_by_slug,name='pg_slug'),
然后通过“/”将传递给
page\u的
segments
参数拆分为
page\u by\u slug()
,然后您将得到
['parent'、'child'、'sunder']
。我不确定您是如何组织页面模型的,但是如果它没有太复杂,请考虑使用或改进已经包含在Django中的<强>页> <强>包。 请注意,如果您有其他类型的url,这些url并不表示用户生成的页面,而是表示系统自己的页面,那么应该将它们放在您列出的模式之前,因为Django的url匹配机制遵循给定的顺序

url(r'^(?P<segments>[-/\w]+)/$', views.page_by_slug, name='pg_slug'),