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

按照需求设计
  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

时间: 2024-08-03 13:31:58

一个登陆网站验证身份的简单例子的相关文章

个人对servlet的理解、动态网站安装配置以及简单例子解读

Servlet是使用Java Servlet应用程序设计接口(API)及相关类和方法的Java程序,除了Java Servlet API,它还可以用于扩展和添加API的Java类软件包.Java语言能够实现的功能,Servlet基本都能实现(除了图形界面外).Servlet主要处理客户端传来的HTTP请求,并返回一个响应.通常所说的Servlet就是指HttpServlet,能够处理的请求有,doGet().doPost()和service()等方法.在开发Servlet时,可以直接继承java

从一个简单例子来理解js引用类型指针的工作方式

? 1 2 3 4 5 6 7 <script> var a = {n:1};  var b = a;   a.x = a = {n:2};  console.log(a.x);// --> undefined  console.log(b.x);// --> [object Object]  </script> 上面的例子看似简单,但结果并不好了解,很容易把人们给想绕了--"a.x不是指向对象a了么?为啥log(a.x)是undefined?".&

完成一个登陆页面。(用户名:F11;密码:123456)。要求用户输入用户 名和密码,验证是否等于正确值。如果等于告知登陆成功,程序结束;否则告 知用户名密码有误。用户三次输入不正确,告知登陆失败,程序结束 。

#include <stdio.h>#include <string.h> /*完成一个登陆页面.(用户名:F11:密码:123456).要求用户输入用户名和密码,验证是否等于正确值.如果等于告知登陆成功,程序结束:否则告知用户名密码有误.用户三次输入不正确,告知登陆失败,程序结束 .*/ void main(){ char username[20]; char password[20]; int i = 0; for(i = 0; i < 3; i++) { printf(

基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。

基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍.最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室.

用R语言实现一个求导的简单例子

在学习导数的时候,老师都会这样解释,假设y=f(x),对点(x0,y0)的求导过程如下:设dx是一个很小的数=> y0+dy=f(x0+dx)=> dy=f(x0+dx)-y0则在这一点的导数a=dy/dx这样假设的前提是dx很小,所以x0至(x0+dx)很短,可以近似为一条直线,则dy/dx可以看成是点(x0,y0)和点(x0+dx,y0+dy)连成直线的斜率因此关于某个点的导数,其意义也可以解释成在该点的变化率 下面用R语言实现一个简单例子:假设:y=1/x,求点(1,1)的导数 x<

C语言多线程的一个简单例子

多线程的一个简单例子: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <pthread.h> void * print_a(void *); void * print_b(void *); int main(){ pthread_t t0; pthread_t t1; // 创建线程A if(pthread_creat

生产者与消费者的一个简单例子

生产者 #include<fstream> #include<iostream> #include<Windows.h> using namespace std; int main(void) { ofstream out; const char ch = '*'; long long k = 0; DWORD64 time = GetTickCount64(); while (true) { if (GetTickCount64() - time > 5000)

一个java解析xml的简单例子

java解析xml,主要是通过Dom4j实现的,很多场合都会用到此功能,需要解析XML文件. 下面是一个简单的解析XML文件的例子: import java.util.Iterator; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; /** * 解析XML文件 * * @author sunlightcs

JSP验证码简单例子

原文:JSP验证码简单例子 源代码下载地址:http://www.zuidaima.com/share/1550463705320448.htm 几年前用servlet写的一个简单验证码功能.还有许多要完善的,但是验证码已经完善了. 包含登陆界面,可以自己修改下验证码代码把验证码的代码写进后台,生成图片后再输出到页面.也可以把验证码生成更复杂些. 登陆成功  验证失败