C’est ce que j’utilise actuellement pour l’inscription:
def register(request): if request.method == 'POST': form = UserCreationForm(request.POST) if form.is_valid(): new_user = form.save() messages.info(request, "Thanks for registering. Please login to continue.") return HttpResponseRedirect("/dashboard/") else: form = UserCreationForm() return render_to_response("accounts/register.html", { 'form': form, }, context_instance=RequestContext(request))
Est-il possible de ne pas obliger l’utilisateur à se connecter manuellement après la création d’un compte, mais simplement de les connecter automatiquement? Merci.
edit: J’avais essayé la fonction login () sans succès. Je crois que le problème est que AUTHENTICATION_BACKENDS n’a pas été défini.
En utilisant les fonctions authenticate()
et login()
:
from django.consortingb.auth import authenticate, login def register(request): if request.method == 'POST': form = UserCreationForm(request.POST) if form.is_valid(): new_user = form.save() messages.info(request, "Thanks for registering. You are now logged in.") new_user = authenticate(username=form.cleaned_data['username'], password=form.cleaned_data['password1'], ) login(request, new_user) return HttpResponseRedirect("/dashboard/")
pour les vues basées sur les classes, voici le code qui a fonctionné pour moi (django 1.7)
from django.consortingb.auth import authenticate, login from django.consortingb.auth.forms import UserCreationForm from django.views.generic import FormView class SignUp(FormView): template_name = 'signup.html' form_class = UserCreateForm success_url='/account' def form_valid(self, form): #save the new user first form.save() #get the username and password username = self.request.POST['username'] password = self.request.POST['password1'] #authenticate user then login user = authenticate(username=username, password=password) login(self.request, user) return super(SignUp, self).form_valid(form)