2016-03-28 36 views
0

Bir kullanıcının, sınıf tabanlı bir form görünümüne izin vermeden önce kimlik doğrulaması yapıp yapmadığını kontrol etmek için bir mixin kullanıyorum. İyi çalışır, ancak kullanıcı kimliği doğrulanmamışsa, onları '/ accounts/profile /' varsayılan giriş yoluna yönlendirir. Belgelere göre bu yol LOGIN_REDIRECT_URL veya belki de settings.py dosyasında LOGIN_URL kullanılarak geçersiz kılınabilir. Bununla birlikte, the documentation, her ikisinin de Django 1.8'deki kullanımdan kaldırıldığını ve Django 1.10'da kaldırılacağını belirtir. 1.9'dayım ve gelecekteki kodumu kanıtlamak istiyorum. Giriş URL'si veya giriş yönlendirme URL'sinin onaylanmamış bir yöntem kullandığını nasıl belirleyebilirim? Mixin yaklaşımını bırakmaya bile razı olurdum, ancak sınıf temelli bir görüşün talebi üzerine manuel bir kontrol gerçekleştiririm ve sonra çek başarısız olur mu?LOGIN_REDIRECT_URL kullanımdan kaldırıldı mı?

class LoginCheckMixin(UserPassesTestMixin): 
    def test_func(self): 
     if 'id_token' in self.request.session: 
      return validate_google_token(self.request.session['id_token']) 
     else: 
      return False 


class RegistrationFormView(LoginCheckMixin, FormView): 
    template_name = 'registration/registration_form.html' 
    form_class = RegistrationForm 
    success_url = 'results' 

cevap

3

LOGIN_URL ve LOGIN_REDIRECT_URL kaldırılmış değildir.

Django 1.8'de, bu ayarların değerleri olarak noktalı bir Python yolunu kullanmak için kullanımdan kaldırılmıştır. Oturum açma url Say:

url('^login/$', views.login, name='login') 

kullanımdan kaldırıldı ardından

LOGIN_URL = 'path.to.views.login' 

ama yine

LOGIN_URL = '/login/' # hardcoded url 

veya

LOGIN_URL = 'login' # the name of the url pattern 
+0

Teşekkür kullanabilirsiniz! Bu mantıklı. Sabit kodlanmış bir URL ile harika çalıştı. URL modelini denediğimde çalışmadı. url (r '^ $', views.login, name = 'login') LOGIN_URL = 'login' sonuçlandı: NoReverseMatch '' (') argümanlarıyla' giriş 'için' 've' 'anahtar kelime argümanları' 'için' '{}' bulunamadı. 0 desen denendi: [] – AdamG

+2

Url model adını kullanmanız gerekir. URL'leri dahil etmek için bir ad alanı kullanıyor musunuz? Eğer öyleyse 'LOGIN_URL = ': login' 'yapmalısınız. – Alasdair

İlgili konular