今日我学习django,但看的django book是根据0.96的版本讲的,而且小弟看得有些云里雾里
def register(request):
form = UserCreationForm()
if request.method=='POST':
data = request.POST.copy()
error = form.get_validation_errors(data)
if not error:
new_user = form.save(data)
return HttpResponseRedirect("/")
else:
data,error={},{}
return render_to_response("account/register.html",{'form':forms.Form(form, data, error)})
谁能帮忙解释一下这段代码,并且能给出1.0版本中的实现,或是一个完整的注册登录的例子
感激不尽!
之后我改正了代码现在呈现给大家关于登录与注册的完整代码:
#register view
def register(request):
if request.method == 'POST':
form = UserForm(request.POST) #UserForm为自定义继承自UserCreationForm的Form类
if form.is_valid():
form.save()
user = authenticate(username=form.cleaned_data['username'], password=form.cleaned_data['password1'])
auth_login(request, user)
if request.POST['next']:
return HttpResponseRedirect(request.POST['next'])
else:
return HttpResponseRedirect('/')
return render_to_response('registration/register_form.html', {'form':form})
else:
return render_to_response('registration/register_form.html', {'form':UserForm()})
#login
def login(request):
if request.method == 'POST':
user = authenticate(username=request.POST['username'], password=request.POST['password'])
if user is not None:
if user.is_active:
auth_login(request, user)
#登录成功
if request.POST['next']:
return HttpResponseRedirect(request.POST['next'])
else:
return HttpResponseRedirect('/')
else:
#登录失败
return render_to_response('registration/login.html')
else:
#验证失败
return render_to_response('registration/login.html')
else:
return render_to_response('registration/login.html')
# logout
def logout(request):
#from django.core.urlresolvers import reverse
auth_logout(request)
return HttpResponseRedirect('/')
可是还有一个问题就是登录之后再次打开还是登录着的,
当我在settings.py中设置SESSION_COOKIE_AGE = 0
还是不能做到关闭浏览器就logout的效果?
回复 夏清然 2009年08月21日 星期五 20:17
http:
简单说是存储用户的表的数据结构定义在了UserCreationForm里,前台html里提交的form直接通过这个这个类的定义生成,同时这也是一个models类,直接save即可。