Django urls.py传递变量的问题

时间:2010-11-23 13:02:12

标签: django url

我有一个名为投资组合的应用程序,我正在尝试绘制页面,以便最终得到一个始终存在的固定区域,称为“图库”。我设置了它并且工作正常,但是图库项目被映射到page_type区域,例如'images','videos'等所以我希望我的root urls.py检测到这个然后发送正确的视图但是我无法弄清楚如何做到这一点

root urls.py

urlpatterns = patterns('',

 (r'^(?P<page_type>[a-zA-Z0-9-]+)/$', include('portfolio.urls')),
 (r'^gallery/', include('portfolio.urls')),

 (r'^admin/(.*)', admin.site.root)
)

投资组合urls.py

urlpatterns = patterns('portfolio.views',
 #(r'^(?P<gallery_type>\d+)/$', 'index'),
 (r'^page/(?P<page_number>[0-9]+)/$', 'index'),
 (r'^(?P<page_category>[a-zA-Z0-9-]+)/$', 'category_index'),
 (r'^(?P<page_category>[a-zA-Z0-9-]+)/page/(?P<page_number>[0-9]+)/$', 'category_index'),
 (r'^$', 'index'),
)

甚至可能吗?如何?我找不到关于传递匹配表达式等的任何信息。

提供帮助。谢谢:))

一位朋友指出我可以直接查看视图而不是通过应用程序urls.py来做这样的事情 [码] (r'^(?P [a-zA-Z0-9 - ] +)/(?P [a-zA-Z0-9 - ] +)/ $','portfolio.views.detail'), [/代码]

然后使用以下方法访问它: [码] def detail(request,page_type,page_name):    ... [/代码]

1 个答案:

答案 0 :(得分:5)

您必须在(r'^gallery/', include('portfolio.urls')),之前移动(r'^(?P<page_type>[a-zA-Z0-9-]+)/$', include('portfolio.urls')),,因为页面类型正则表达式也会匹配'gallery /',并且模式在定义时按顺序显示!