2010-11-23 23 views
9

'da nasıl edinilir İki uygulama içeren bir proje oluşturmak için Django 1.3 alpha kullanıyorum. Sınıf tabanlı görünümler nedeniyle 1.3 kullanıyorum. Bu iki uygulama için, uygulamalardaki gerçek görünümlerle miras kalan bir dizi ortak temel görünüm sınıfına sahibim. Temel sınıfta, görünümün hangi uygulamadan "çağırıldığı" nı öğrenmenin bir yolu var mı? Örneğin. "Mevcut" uygulamayı almak için URL'yi kullanabilir miyim? resolve(self.request.path):Geçerli uygulama Django

cevap

7

Eğer görünümü hakkında bilgi görüntüler modele erişmek için self.model erişebilir sağlar django jenerik listesi ve detay görünümleri devralan yapıyorsanız, aksi takdirde muhtemelen django's resolve() kullanmak olacaktır.

# views.py 
from django.views.generic.base import View 
class MyView(View): 
    app_name = None 

# urls.py 
from django.conf.urls.defaults import * 
from some_app.views import MyView 

urlpatterns = patterns('', 
    (r'^myview/', MyView.as_view(app_name='app_name')), 
) 

Sonra self.app_name suretiyle erişimi mümkün olmalıdır:

Ayrıca seçtiğiniz bir anahtar kelime ile arama Kendi View alt sınıfı yapabiliriz.

+1

Bir app_name özniteliği içeren resol() öğesinden döndürülen nesneyi bilmiyordum. Uygulamaya özel url-config'lerini içeren app_name argümanını kullanmak için üst proje url-config dosyasını değiştirdim, ardından app_name'i buradan almak için resol() öğesini kullanarak değiştirdim. Teşekkürler! –

+0

Bunu denedim, ancak app_name değişkeni her zaman 'Hiçbiri' değerini döndürüyor. Herhangi bir tavsiye? –

+0

Değişkene nasıl erişmeye çalışıyorsunuz? –

İlgili konular