2012-05-10 35 views
1

有沒有什麼辦法可以簡化<product>而不將它們放入單獨文件中的模式?對類似的URL模式進行分組

urlpatterns = patterns('', 
# Basic product functions 
url(r'^create/$', 'product.views.create'),      
url(r'^save/$', 'product.views.save'), 
url(r'^save/(?P<product>[a-z0-9\-]+)/$', 'product.views.save'), 
url(r'^edit/(?P<product>[a-z0-9\-]+)/$', 'product.views.edit'), 
url(r'^publish/(?P<product>[a-z0-9\-]+)/$', 'product.views.publish'), 
url(r'^upload_image/(?P<product>[a-z0-9\-]+)/$', 'product.views.upload_image'), 

# Blog 
url(r'^(?P<product>[a-z0-9\-]+)/blog/(?P<blog_id>[0-9]+)/view/(?P<content_id>[0-9]+)/$', 'blog.views.view'), 
url(r'^(?P<product>[a-z0-9\-]+)/blog/(?P<blog_id>[0-9]+)/$', 'blog.views.main'), 
url(r'^(?P<product>[a-z0-9\-]+)/blog/(?P<blog_id>[0-9]+)/(?P<page>[0-9]+)/$', 'blog.views.main'),      #pagination for main 

# Categories 
url(r'^(?P<product>[a-z0-9\-]+)/category/(?P<category_id>[0-9]+)/$', 'category.views.category'), 
url(r'^(?P<product>[a-z0-9\-]+)/category/(?P<blog_id>[0-9]+)/category/(?P<category_id>[0-9]+)/(?P<page>[0-9]+)/$', 'category.views.category'), #pagination for main 

# Content 
url(r'^(?P<product>[a-z0-9\-]+)/content/(?P<blog_id>[0-9]+)/edit/$', 'content.views.edit'), 
url(r'^(?P<product>[a-z0-9\-]+)/content/(?P<blog_id>[0-9]+)/edit/(?P<content_id>[0-9]+)/$', 'content.views.edit'), 
) 

只是尋找任何可能的方式來簡化這裏的東西。

是否有某種包裝我可以把所有的^<product>模式進行預處理呢?

回答

2

喜Django的文檔中,你可以發現:

from django.conf.urls import patterns, url, include 

extra_patterns = patterns('', 
    url(r'^reports/(?P<id>\d+)/$', 'credit.views.report', name='credit-reports'), 
    url(r'^charge/$', 'credit.views.charge', name='credit-charge'), 
) 

urlpatterns = patterns('', 
    url(r'^$', 'apps.main.views.homepage', name='site-homepage'), 
    (r'^help/', include('apps.help.urls')), 
    (r'^credit/', include(extra_patterns)), 
) 

,所以你可以這樣做:

extra_patterns = patterns('', 
    url(r'blog/(?P<blog_id>[0-9]+)/view/(?P<content_id>[0-9]+)/$', 'blog.views.view'), 
    url(r'blog/(?P<blog_id>[0-9]+)/$', 'blog.views.main'), 
    url(r'blog/(?P<blog_id>[0-9]+)/(?P<page>[0-9]+)/$', 'blog.views.main'),      #pagination for main 

    # Categories 
    url(r'category/(?P<category_id>[0-9]+)/$', 'category.views.category'), 
    url(r'category/(?P<blog_id>[0-9]+)/category/(?P<category_id>[0-9]+)/(?P<page>[0-9]+)/$', 'category.views.category'), #pagination for main 

    # Content 
    url(r'^content/(?P<blog_id>[0-9]+)/edit/$', 'content.views.edit'), 
    url(r'^content/(?P<blog_id>[0-9]+)/edit/(?P<content_id>[0-9]+)/$', 'content.views.edit'), 
) 


urlpatterns = patterns('', 
    # Basic product functions 
    url(r'^create/$', 'product.views.create'),      
    url(r'^save/$', 'product.views.save'), 
    url(r'^save/(?P<product>[a-z0-9\-]+)/$', 'product.views.save'), 
    url(r'^edit/(?P<product>[a-z0-9\-]+)/$', 'product.views.edit'), 
    url(r'^publish/(?P<product>[a-z0-9\-]+)/$', 'product.views.publish'), 
    url(r'^upload_image/(?P<product>[a-z0-9\-]+)/$', 'product.views.upload_image'), 

    # Blog 
    url(r'^(?P<product>[a-z0-9\-]+)/', include(extra_patterns)), 
) 
+0

真棒!瘋狂的道具! – Adam

相關問題