2015-04-05 35 views
0

我想在我的urls.py中引用一個包含在同一個urls.py文件中的另一個urls。Django包含單個urls.py

我的結構如下:

├── docs 
├── requirements 
├── scripts 
└── sonata 
    ├── person 
    │   ├── migrations 
    │   ├── templatetags 
    │   └── urls.py 
    ├── registration 
    │   ├── migrations 
    │   └── urls.py 
    └── sonata 
     ├── settings 
     └── urls.py 

我要每個來的網址前綴「PDF /」添加一個值來kwargs並再次調用URL的其餘部分。這是我的嘗試:

urlpatterns = patterns('', 
    url(r'^$',TemplateView.as_view(template_name='registration/login.html')), 

    # This is my attempt for capturing the pdf prefix 
    # and calling this same file afterwards with the pdfOutput variable set to True 
    url(r'^pdf/', include('sonata.urls'), kwargs={'pdfOutput':True}), 

    url(r'^admin/', include(admin.site.urls)), 
    url(r'^person/', include('person.urls')), 
    url(r'^registration/', include('registration.urls')), 
    url(r'^menu/', registration_views.menu, name='menu'), 
    url(r'^customers/', person_views.customers, name='customers'), 
    url(r'^employees/', person_views.employees, name='employees'), 
    url(r'^alumns/', person_views.alumns, name='alumns'), 
    url(r'^teaching/', person_views.docencia, name='teaching'), 
    url(r'^i18n/', include('django.conf.urls.i18n')), 
) 

有沒有這樣做的方法?我看了文檔。似乎很清楚如何傳遞值,但是在證明我不能使包含之後。 (我不希望包含()數組模式重複所有的URL,這將打破DRY原則)。

預先感謝

回答

2

的問題是,include立即導入包含URL配置,從而導致圓形進口錯誤。你可以做這樣的事情,雖然:

sonata_patterns = [ 
    url(r'^$',TemplateView.as_view(template_name='registration/login.html')), 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^person/', include('person.urls')), 
    url(r'^registration/', include('registration.urls')), 
    url(r'^menu/', registration_views.menu, name='menu'), 
    url(r'^customers/', person_views.customers, name='customers'), 
    url(r'^employees/', person_views.employees, name='employees'), 
    url(r'^alumns/', person_views.alumns, name='alumns'), 
    url(r'^teaching/', person_views.docencia, name='teaching'), 
    url(r'^i18n/', include('django.conf.urls.i18n')), 
] 

urlpatterns = [ 
    url(r'^pdf/', include(sonata_patterns), kwargs={'pdfOutput':True}) 
] + sonata_patterns 

另一種可能性是使用中間件捕捉pdf前綴和設置請求的屬性。這樣,如果所有視圖都接受pdfOutput參數,則不必擔心。

+0

謝謝。現在這裏已經太晚了。我會很快測試這個。 – madtyn 2015-04-05 22:40:30