一个登陆网站验证身份的简单例子

按照需求设计
  1. 登陆注册
  2. 人员属于不同的班级
  3. 学生操作
  4. 班级操作
  5. 老师操作
  6. 增删改查
开发
  1. 定义数据库表结构
  2. 登陆注册
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')

转载于:https://www.cnblogs.com/haozike/p/8457075.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值