2017-02-06 2 views
0

views.pyWie kann der Benutzer nur ein Profil in Django erstellen?

class CreateProfile(LoginRequiredMixin, CreateView): 
login_url = '/accounts/login/' 
template_name = 'profile/new_profile.html' 
model = Profile 
fields = ['full_name','profile_pic','title','summary'] 

def user_redirect(request): 
    if request.user.is_authenticated(): 
     return render(request, '#redirect to some page') 

, wenn der Benutzer angemeldet ist bereits in er nicht in der Lage sein sollte, die ‚Profil/erstellen‘ URL zuzugreifen.

+0

Bitte fügen Sie Ihre Modelle? – MicroPyramid

+0

Die Modelle werden nicht benötigt, Ihr Code zeigt die Seite nicht an, wenn der Benutzer nicht authentifiziert ist, da er das Login benötigt, das benötigt wird. Was ist also Ihre Frage? – Sayse

+0

Meine Frage ist, ich möchte, dass ein Benutzer nur ein Profil erstellt. Wenn der Benutzer bereits ein Profil hat, sollte er nicht auf die URL 'profile/create' zugreifen können –

Antwort

2

Sie können Ihre Anmeldung oder Ihre Login-Ansicht mit dem folgenden Dekorateur dekorieren ...

from django.http import HttpResponseRedirect 

def anonymous_required(view_function, redirect_to = None): 
    return AnonymousRequired(view_function, redirect_to) 

class AnonymousRequired(object): 
    def __init__(self, view_function, redirect_to): 
     if redirect_to is None: 
      from django.conf import settings 
      redirect_to = settings.LOGIN_REDIRECT_URL 
     self.view_function = view_function 
     self.redirect_to = redirect_to 

    def __call__(self, request, *args, **kwargs): 
     if request.user is not None and request.user.is_authenticated(): 
      return HttpResponseRedirect(self.redirect_to) 
     return self.view_function(request, *args, **kwargs) 

Anonymous Required Decorator

Verwandte Themen