user7486109
user7486109

Reputation:

how to allow user to create only one profile in django?

views.py

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')

if the user is already logged in he should not be able to access the 'profile/create' url.

Upvotes: 0

Views: 108

Answers (1)

Tim
Tim

Reputation: 1592

You can decorate your signup or your login view with the following decorator...

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

Upvotes: 2

Related Questions