zoukankan      html  css  js  c++  java
  • Django笔记-登陆、注册(利用cookie实现)

    1、项目结构:

    2、关键代码:

    settings.py

    INSTALLED_APPS = (
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'blog',
    )
    
    MIDDLEWARE_CLASSES = (
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        #'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    )
    View Code
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'test10',
            'HOST':'localhost',
            'PORT':'3306',
            'USER':'root',
            'PASSWORD':'passwd',
                    
        }
    }
    View Code

    urls.py

        url(r'^register/$', 'blog.views.register'),
        url(r'^login/$','blog.views.login'),
        url(r'^index/$', 'blog.views.index'),
        url(r'^logout/$','blog.views.logout'),
    View Code

    models.py

    # -*- coding: utf-8 -*-
    from django.db import models
    
    class User(models.Model):
        username = models.CharField(max_length=20)
        password = models.CharField(max_length=30)
        
        def __unicode__(self):
            return self.username
    View Code

    views.py

    # -*- coding: utf-8 -*-
    from django.shortcuts import render, render_to_response
    from django.http import HttpResponse
    from django import forms
    from models import User
    from django.http.response import HttpResponseRedirect
    
    class UserForm(forms.Form):              
        username = forms.CharField()
        password = forms.CharField(widget=forms.PasswordInput)  
     
     
    def register(req):
    #处理post方法的数据    
        if req.method == "POST":                                            
            uf = UserForm(req.POST)
    #如果数据有效        
            if uf.is_valid():   
                username = uf.cleaned_data['username']
                password = uf.cleaned_data['password']          
                #username = unicode(uf.cleaned_data['username'],'UTF-8')
                #password = unicode(uf.cleaned_data['password'],'UTF-8')
                #print username,password       
                #return HttpResponse('ok')          
                User.objects.create(username=username,password=password)
                return HttpResponseRedirect('/login/')
            else:
                uf = UserForm()
                return render_to_response('register.html',{'uf':uf})
    #处理get方法的数据        
        else  :                                                             
            uf = UserForm(req.GET)
            if uf.is_valid(): 
                username = uf.cleaned_data['username']    
                password = uf.cleaned_data['password']        
                #username = unicode(uf.cleaned_data['username'],'UTF-8')
                #password = unicode(uf.cleaned_data['password'],'UTF-8')
                #print username,password        
                #return HttpResponse('ok')         
                User.objects.create(username=username,password=password)
                return HttpResponseRedirect('/login/')
            else:
                uf = UserForm()
                return render_to_response('register.html',{'uf':uf})
    
    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']    
    #获取名字和密码                  
                users = User.objects.filter(username__exact=username,password__exact=password)
                if users:
    #获取到response                
                    response = HttpResponseRedirect('/index/')
    #保存到cookie                
                    response.set_cookie('username', username, 3600)
                    return response
                
                else:
                    return HttpResponseRedirect('/login/')
                #return HttpResponseRedirect('/login/')
            else:
                uf = UserForm()
                return render_to_response('login.html',{'uf':uf})
        else  :
            uf = UserForm(req.GET)
            if uf.is_valid(): 
                username = uf.cleaned_data['username']    
                password = uf.cleaned_data['password']        
                users = User.objects.filter(username__exact=username,password__exact=password)
                if users:
                    #return HttpResponseRedirect('/index/')
                    response = HttpResponseRedirect('/index/')
                    #response.set_signed_cookie('username', username, 3600)
                    response.set_cookie('username',username,3600)
                else:
                    return HttpResponseRedirect('/login/')
                #return HttpResponseRedirect('/login/')
            else:
                uf = UserForm()
                return render_to_response('login.html',{'uf':uf})
    
    
    def index(req):
        #return HttpResponse('ok')
        username = req.COOKIES.get('username','')
        #return HttpResponse('welcome %s'% username)
        return render_to_response('index.html',{'username':username})
    
    def logout(req):
    #    删除cookie
         response = HttpResponse('logout')
         response.delete_cookie('username')
         return response
        
        
    View Code

    register.html

    <body>
      <form method="post">
        {{uf.as_p}}
        <input type="submit" value="OK"/>
      </form>
    </body>
    View Code

    login.html

    <body>
      <form method="post">
        {{uf.as_p}}
        <input type="submit" value="OK"/>
      </form>
    </body>
    View Code

    index.html

    <body>
      <div>
        <h1>welcome , {{username}}</h1>
        <a href='/logout/'>logou</a>
      </div>
    </body>
    View Code

     3、效果截图:

    注册:

    登陆:

    登陆成功:

    注销:

    再次输入index主体页面,已经删除了cookie,效果如下:

    在数据库中插入的数据(推荐使用SQLyog,这个真心不错):

  • 相关阅读:
    32.ExtJS简单的动画效果
    set、env、export差分
    【翻译】Why JavaScript Is and Will Continue to Be the First Choice of Programmers
    J2EE请求和响应—Servlet
    Leetcode: Spiral Matrix. Java
    Android正在使用Handler实现信息发布机制(一)
    Android开发工具综述,开发人员必备工具
    Android 从硬件到应用程序:一步一步爬上去 5 -- 在Frameworks蒂姆层硬件服务
    HDU 2828 DLX搜索
    2016第三周三
  • 原文地址:https://www.cnblogs.com/chinas/p/4376051.html
Copyright © 2011-2022 走看看