这就是我目前用于注册的内容:
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))
Run Code Online (Sandbox Code Playgroud)
是否可以在创建帐户后不要求用户手动登录,而只是自动登录?谢谢.
编辑:我尝试过login()函数但没有成功.我认为问题是没有设置AUTHENTICATION_BACKENDS.
Ben*_*mes 97
使用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/")
Run Code Online (Sandbox Code Playgroud)
对于基于类的视图这里是为我工作的代码(最初是Django 1.7,更新为2.1)
from django.contrib.auth import authenticate, login
from django.contrib.auth.forms import UserCreationForm
from django.http import HttpResponseRedirect
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 HttpResponseRedirect(self.get_success_url)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26042 次 |
| 最近记录: |