2011-03-24 14 views
8

Bu gibi bir görünüm verildiğinde:Django'da, yöntemleri görüntülemek için otomatik olarak URL'leri eşleyebilir misiniz?

# my_app/views.py 
def index(request): 
    ... 
def list(request): 
    ... 
def about(request): 
    ... 

Görüntünün her bir yöntemi için urls.py dosyasında açık bir şekilde bildirmek yerine:

# urls.py 
url(r'^index$', 'my_app.views.index'), 
url(r'^list$', 'my_app.views.list'), 
url(r'^about$', 'my_app.views.about'), 
... 

Sadece URL dağıtıcısına görünüm vermek mümkün mü (my_apps.views) ve tüm görüşün yöntemlerini ele alsın mı?

cevap

1

Sana yakalanan parametreyi kolları manzaralı bir url Regexp'i yakalayan bir görünümü,

r'^(?P<viewtype>index|list|about)/$', 'myview'

olabilir varsayalım.

def myview(request, viewtype): 
    if viewtype == 'index': 
      return http.HttpResponse("I'm the index view") 
    elif viewtype == 'list': 
      return http.HttpResponse("I'm the list view') 

Ancak, görünümünüzün mantığını açıklık açısından ayrı tutmanızı öneriyorum. 3 farklı görüntülemeyi kendi özel işlevleri ile takip etmek 3'den/sonra ifadelerden daha kolaydır.

+0

Evet, görünüm yöntemine göre açık bildirimlere uydum. “Urls.py” yi temizlemek için gerekli olan çok fazla şey yoktu. Teşekkürler! –

+1

Bence bu doğru çağrı :) Benim için eğer urls.py'yi temizlemem gerekiyorsa, 'include (new_urls)' yi kullanırım ve yeni bir URL'yi görünümle aynı appda tutardım. –

+0

avantajı, urls.py'yi görünümdeki yöntemlerle senkronize etmeyi düşünmek zorunda kalmamak için görünüm yöntemlerini eklemeye/çıkarmaya devam ederken geliştirmede gerçekten yararlıdır. PlayFramework, örneğin, denetleyici/yöntem adları olarak URL parçalarını ayrıştırmanıza izin vererek bunu başarır – Tony

İlgili konular