啃了几天文档,感觉能理解了这个框架,但是真的下手的时候真的不知道从何开始。
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文件,还有就是改路由。