/ / Django - django में पंजीकरण के बाद उपयोगकर्ता को स्वचालित रूप से लॉगिन कैसे करें

Django - django में पंजीकरण के बाद स्वचालित रूप से उपयोगकर्ता को कैसे लॉगिन करें

यह मैं वर्तमान में पंजीकरण के लिए उपयोग कर रहा हूं:

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

क्या खाता बनाने के बाद उपयोगकर्ता को मैन्युअल रूप से लॉगिन करने की आवश्यकता नहीं है, बल्कि उन्हें स्वचालित रूप से लॉग इन करना है? धन्यवाद।

संपादित करें: मैंने सफलता के बिना लॉगिन () फ़ंक्शन की कोशिश की थी। मेरा मानना ​​है कि समस्या यह है कि AUTHENTICATION_BACKENDS सेट नहीं किया गया था।

उत्तर:

जवाब के लिए 88 № 1

का उपयोग करते हुए authenticate() तथा login() कार्य:

from django.contrib.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/")

जवाब के लिए 5 № 2

यहाँ कक्षा आधारित विचारों के लिए मेरे लिए काम करने वाला कोड था (django 1.7)

from django.contrib.auth import authenticate, login
from django.contrib.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)