Genel ad sınıfını url adından almanın önerilen yolu nedir?Django: Genel ad sınıfını url adından alın
url(r'^$', HomeView.as_view(), name='home')
'Ev' ile birlikte, HomeView sınıfını almak istiyorum.
Genel ad sınıfını url adından almanın önerilen yolu nedir?Django: Genel ad sınıfını url adından alın
url(r'^$', HomeView.as_view(), name='home')
'Ev' ile birlikte, HomeView sınıfını almak istiyorum.
ben şu soruya aldığım get_class: Does python have an equivalent to Java Class.forName()?
url = reverse('home')
resolver_match = resolve(url)
func = resolver_match.func
module = func.__module__
view_name = func.__name__
clss = get_class('{0}.{1}'.format(module, view_name))
Bu ben diğer cevaplar çok açığım kendim ile geldi budur. Pickels' cevabı esinlenerek
:() döner as_view işlevlerine
import importlib
from django.core.urlresolvers import reverse, resolve
view_name = 'my_view_name'
view_func = resolve(reverse(view_name)).func
module = importlib.import_module(view_func.__module__)
view = getattr(module, view_func.__name__)
Django 1.9 tanıtıldı 2 nitelikler. view_initkwargs
ve view_class
. Pickles ile bu birleştiren
cevabı:
url = reverse('home')
view = resolve(url).func.view_class
Sen tersi gitmek isteyebilirsiniz: görünüm sınıfı gelen adıyla url adının. Niye ya? Çünkü sınıf isimleri daha çok yapılandırılmış bir dünya. Örneğin, bir yazım hatası sonrasında, rahatsız edici satırın burada çözülmeyen bir ad içermesi durumunda daha anlamlı bir hata mesajı alırsınız. (Sınıf tabanlı görünümler için, hem çözümleme hem de notlamayı daha basit hale getirmeniz için '.as_view()' öğesini uygulayan bir yardımcı olacaktır.) –