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文件,还有就是改路由。

原文地址:https://www.cnblogs.com/afei123/p/11285483.html