恽智超

恽智超的博客

他的个人主页  他的博客

关于django注册登录的例子

恽智超  2009年08月21日 星期五 20:11 | 2999次浏览 | 1条评论

今日我学习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的效果?

评论

我的评论:

发表评论

请 登录 后发表评论。还没有在Zeuux哲思注册吗?现在 注册 !
夏清然

回复 夏清然  2009年08月21日 星期五 20:17

这个用到了django的Forms from models:
http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#topics-forms-modelforms

简单说是存储用户的表的数据结构定义在了UserCreationForm里,前台html里提交的form直接通过这个这个类的定义生成,同时这也是一个models类,直接save即可。

0条回复

暂时没有评论

Zeuux © 2021

京ICP备05028076号