zoukankan      html  css  js  c++  java
  • django 完成登录功能

    啃了几天文档,感觉能理解了这个框架,但是真的下手的时候真的不知道从何开始。

    orm即Object-Relationl Mapping,看这名字就是操作数据库的,用过ssm,不过django操作数据库是真的强大,直接用model去创建表

    mtv也了解,model,templates,views。感觉上和mvc(model,view,control)类似,但是功能太强大,前者的view感觉就是后者的view加control,url config看的头也大,到底怎么构成的,模板里又去了哪里。数据从哪来到哪去

    诶,看了下,说如果先从flask入手,再去django就能更好的理解,主要django真的太强大了,给我的感觉就是很多一个什么都能做的机器和一堆组合键。。。。

    下面进入正题吧

    要实现功能的话,先创建一个login的app吧,用python manage.py startapp login创建一个login,我这是直接放在之前的那个项目里了,

    from django.db import models
    import datetime
    from django.utils import timezone
    
    class User(models.Model):
    
        gender = (
            ('male',''),
            ('female',''),
        )
    
        name = models.CharField(max_length=128,unique=True)
        password = models.CharField(max_length=258)
        sex = models.CharField(max_length=32,choices=gender,default='')
        c_time = models.DateTimeField(auto_now_add=True)
    
        def __str__(self):
            return self.name
    
    
    # Create your models here.

    我创建了这些字段,性别这边可能有点看不懂,我设置了默认为男。

    然后去setting里把login添加到INSTALLED_APPS

    然后去创建数据库python manage.py makemigration login

    在输入python manage.py migrate,数据库对应的模型就创建好了,然后去admin里注册一下

    from django.contrib import admin
    from . import models
    
    admin.site.register(models.User)
    
    # Register your models here.

    之后,启动服务,在后台就可以添加用户了。

    到这不得不再感慨下django的功能强大,十来行代码就是一个功能。

    去view改视图,创建login方法

    from __future__ import unicode_literals
    
    from django.shortcuts import render
    
    # Create your views here.
    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):
        name = forms.CharField(label='用户名',max_length=100)
        password = forms.CharField(label='密码',widget=forms.PasswordInput())
    
    
    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:
                    #比较成功
                    response = HttpResponseRedirect('/right/')
                    #将username写入浏览器cookie,失效时间为3600
                    response.set_cookie('username',username,3600)
                    return response
                else:
                    #比较失败
                    return HttpResponseRedirect('/wrong/')
        else:
            uf = UserForm()
        return render(req,'login/login.html',{'uf':uf})

     根据代码,不要忘了去创建对应的html文件,还有就是改路由。

  • 相关阅读:
    Lua调用C++时打印堆栈信息
    Node.js批量去除BOM文件
    cocos2d-x中CCLabelAtlas的小图片拼接
    node.js使用mysql模块的坑
    关于chrome插件编写的小结
    【吐槽】如风达快递
    bat调用TexturePacker更新SpriteSheet
    使用node-webkit实现打包工具的小结
    使用devenv.exe自动编译项目
    svn导出文件进行比较
  • 原文地址:https://www.cnblogs.com/afei123/p/11285483.html
Copyright © 2011-2022 走看看