热门IT资讯网

Django1.7中注册、登陆、以及cookie的使用

发表于:2024-11-25 作者:热门IT资讯网编辑
编辑最后更新 2024年11月25日,创建项目与应用#django-admin.pystartproject myadmin#cd myadmin#python manage.py startapp online打开myadmin/mya

创建项目与应用

#django-admin.pystartproject myadmin

#cd myadmin

#python manage.py startapp online

打开myadmin/myadmin/settings.py文件,将应用添加进去:

设计数据库

打开myadmin/online/models.py文件,添加如下内容:

from django.db import models

# Create your models here.

class User(models.Model):

username = models.CharField(max_length=50)

password = models.CharField(max_length=50)

def __unicode__(self):

return self.username

下面进行数据库的同步:

# python manage.py syncdb

Operations toperform:

Apply all migrations: admin, contenttypes,auth, sessions

Runningmigrations:

Applying contenttypes.0001_initial... OK

Applying auth.0001_initial... OK

Applying admin.0001_initial... OK

Applying sessions.0001_initial... OK

You haveinstalled Django's auth system, and don't have any superusers defined.

Would you liketo create one now? (yes/no): yes

Username (leaveblank to use 'root'): root

Email address: [email protected]

Password:

Password(again):

Superusercreated successfully.

[root@bogonmyadmin]# python manage.py makemigrations

Migrations for'online':

0001_initial.py:

- Create model User

[root@bogonmyadmin]# python manage.py migrate

Operations toperform:

Apply all migrations: admin, contenttypes,sessions, auth, online

Runningmigrations:

Applying online.0001_initial... OK

配置URL

打开myadmin/myadmin/urls.py

from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'mysite5.views.home', name='home'),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^online/', include('online.urls')),
)

mysite5/online/目录下创建urls.py文件:

from django.conf.urls import patterns, url
from online import views
urlpatterns = patterns('',
    url(r'^$', views.login, name='login'),
    url(r'^login/$',views.login,name = 'login'),
    url(r'^regist/$',views.regist,name = 'regist'),
    url(r'^index/$',views.index,name = 'index'),
    url(r'^logout/$',views.logout,name = 'logout'),
)

创建视图

打开myadmin/online/views.py 文件:

#coding=utf-8
from django.shortcuts import render,render_to_response
from django.http import HttpResponse,HttpResponseRedirect
from django.template import RequestContext
from django import forms
from models import User
 
#表单
class UserForm(forms.Form):
    username = forms.CharField(label='用户名',max_length=100)
    password = forms.CharField(label='密码',widget=forms.PasswordInput())
 
#注册
def regist(req):
    if req.method == 'POST':
        uf = UserForm(req.POST)
        if uf.is_valid():
            #获得表单数据
            username = uf.cleaned_data['username']
            password = uf.cleaned_data['password']
            #添加到数据库
            User.objects.create(username= username,password=password)
            return HttpResponse('regist success!!')
    else:
        uf = UserForm()
    return render_to_response('regist.html',{'uf':uf}, context_instance=RequestContext(req))
 
#登陆
def login(req):
    if req.method == 'POST':
        uf = UserForm(req.POST)
        if uf.is_valid():
            #获取表单用户密码
            username = uf.cleaned_data['username']
            password = uf.cleaned_data['password']
            #获取的表单数据与数据库进行比较
            user = User.objects.filter(username__exact = username,password__exact = password)
            if user:
                #比较成功,跳转index
                response = HttpResponseRedirect('/online/index/')
                #将username写入浏览器cookie,失效时间为3600
                response.set_cookie('username',username,3600)
                return response
            else:
                #比较失败,还在login
                return HttpResponseRedirect('/online/login/')
    else:
        uf = UserForm()
    return render_to_response('login.html',{'uf':uf},context_instance=RequestContext(req))
 
#登陆成功
def index(req):
    username = req.COOKIES.get('username','')
    return render_to_response('index.html' ,{'username':username})
 
#退出
def logout(req):
    response = HttpResponse('logout !!')
    #清理cookie里保存username
    response.delete_cookie('username')
    return response

这里实现了所有注册,登陆逻辑,中间用到cookie创建,读取,删除操作等。

创建模板

先在mysite5/online/目录下创建templates目录,接着在mysite5/online/templates/目录下创建regist.html 文件:

<span>注册</span>

注册页面:

{% csrf_token %}

`uf`.`as_p`


登陆

myadmin/online/templates/目录下创建login.html 文件:

<span>登陆</span>

登陆页面:

{% csrf_token %}

`uf`.`as_p`


注册

myadmin/online/templates/目录下创建index.html 文件:

welcome `username` !


退出

使用功能

注册


登陆



0