一个登陆网站验证身份的简单例子
按照需求设计
- 登陆注册
- 人员属于不同的班级
- 学生操作
- 班级操作
- 老师操作
- 增删改查
开发
- 定义数据库表结构
- 登陆注册
class Classes(models.Model):
caption = models.CharField(max_length = 32)
class Student(models.Model):
name = models.CharField(max_length = 32)
cls = models.Foreignkey('Classes')
class Teacher(models.Model):
name = models.CharField(max_length = 32)
username= models.CharField(max_length = 32)
password = models.CharField(max_length = 32)
cls = models.ManyToMany('Classes')
登陆成功之后需要保持状态,记录登陆状态
如何获取这个呢?需要通过cookies session等下面讲述一个简单的案例:
一个可以登陆,显示用户登陆后信息的状态的简单页面我们先来设计表结构
有几种用户身份: 学生 老师 管理员
学生属于班级 老师也属于班级
一个班级有多个学生
一个班级有多个老师 一个老师可以任教多个班级由此可以看到 班级和学生之间是一对多的关系
老师和班级之间是多对多的关系
因此,对应到Django的models的设计来看,班级和学生之间是外键关系
老师和班级之间是ManyToMany关系
据此设计吧表结构如下:
class classes(models.Model):
caption = models.CharField(max_length = 32)
class Student(models.Model):
name = models.CharField(max_length = 32)
cls = models.Foreignkey('Classes')
class Teacher(models.Model):
name = models.CharField(max_length = 32)
username = models.CharField(max_length = 32)
password = models.CharField(max_length = 32)
cls = models.ManyToMany('Classes')
表结构设计好之后,就来编写 views了
逻辑要实现:
用户登陆,root+root(用户名家和密码) 则判断用户登陆成功,跳转登陆成功之后的页面
用户登陆失败,则提示用户登陆失败,重新登陆
我们先用CBV的方法编写
from django.shortcut import render
from django.shortcut import redirect
def login(request):
msg = ""
if request.method == "POST":
print request.method
username = request.POST.get("username")
password = request.POST.get("password")
if username == "root" and password == "root":
return redirect('/index.html')
else:
msg = "请输入正确的用户名和密码"
return render(request, 'login.html', {'msg': msg})
return render(request, 'login.html', {'msg': msg})
def index(request):
msg = ""
username = request.get_cookie("username"):
if username:
return render(request, 'index.html', {'username': username})
else:
return render(request, 'login.html')