2016-09-27 4 views
-1

Ich habe Funktion (innerhalb eines class), die True kehrt zurück und machen, wenn ein Benutzer is_authenticate() und is_active aber nicht HTML kehrt, wie ich dachte, es würde.Django Funktion Erste HTML-Seite

class LoginDetails: 
    def __init__(self, request): 
     self.request = request 
     self.template = 'myapp/errorpage.html' 
     self.context = {} 

    def user_is_logged_in(self): 
     if self.request.user.is_authenticated() and self.request.user.is_active: 
      print 'USER IS AUTHENTICATED!' 
      return True 
     print 'USER IS NOT AUTHENTICATED!' 
     return render(self.request, self.template, self.context) 

views.py:

def authUsers(request): 
    logindetails = LoginDetails(request).user_is_logged_in() 
    return HttpResponse("HTML Error Page Not Rendered") 

Wie erhalte ich die Funktion/anzuzeigen Fehlerseite zu machen, ohne dass ich es in views.py zu tun? Beispiel von dem, was ich erreichen möchte, ist Stackoverflow Page Not Found.

+0

Sie sollten nicht "Seite nicht gefunden" hier verwenden; Authentifizierungsfehler ist ein 401, nicht ein 404. –

+0

die Rückgabe von 'render' von einer Methode mit dem Namen' user_is_logged_in' ergibt keinen Sinn – Sayse

Antwort

0

allererst die Klasse wirklich überflüssig ist, nannte es nimmt eine Zeile und Ihre Ansicht zu modifizieren ist auch eine Zeile

from django.http import HttpResponse, Http404 

def authUsers(request): 
    if request.user.is_authenticated() and request.user.is_active: 
     raise Http404 
    else : 
     return render(...) 

diese Klasse verwenden lediglich Angelegenheiten erschwert. Aber wenn Sie wirklich wollten, könnten Sie es wie folgt ändern:

class LoginDetails: 
    def __init__(self, request): 
     self.request = request 
     self.template = 'myapp/errorpage.html' 
     self.context = {} 

    def user_is_logged_in(self): 
     if self.request.user.is_authenticated() and self.request.user.is_active: 
      return False 

     return render(self.request, self.template, self.context) 


def authUsers(request): 
    logindetails = LoginDetails(request).user_is_logged_in() 
    if not logindetails: 
     return HttpResponse("HTML Error Page Not Rendered") 
    else: 
     return logindetails 
Verwandte Themen