前端(HTML)+预设(Django)+数据库(MySQL):用户注册及登录演示

记得在app01下的models中搞定模型类
建立迁移文件:python manage.py makemigrations
根据迁移文件在指定数据库中生成表:python manage.py migrate
create database book character set utf8;创建数据库设置字符集编码

在settings里面设置mysql
    ‘default‘: {
        ‘ENGINE‘: ‘django.db.backends.mysql‘, 
        ‘NAME‘: ‘books‘,     #你的数据库名称
        ‘USER‘: ‘root‘,    #你的数据库用户名
        ‘PASSWORD‘: ‘‘,  #你的数据库密码
        ‘HOST‘: ‘‘,  #你的数据库主机,留空默认为localhost
        ‘PORT‘: ‘3306‘,  #你的数据库端口
    }

init连接mysql

import pymysql
pymysql.install_as_MySQLdb()

1.在templates中创建一个html文件用于简单的注册网页

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>注册</title>
  6        <style>
  7         * {
  8             margin: 0;
  9             padding: 0;
 10         }
 11 
 12         body {
 13             background-color: rgb(235, 235, 235);
 14         }
 15 
 16         form {
 17             width: 400px;
 18             height: 320px;
 19             background-color: white;
 20             padding: 20px;
 21             box-sizing: border-box;
 22             position: absolute;
 23             left: 50%;
 24             top: 50%;
 25             transform: translate(-50%, -50%);
 26             /* 相对于现在所处位置的位移变化,x便偏移自己宽度的50%,y偏移自己高度的50% */
 27         }
 28 
 29         h2 {
 30             margin-bottom: 20px;
 31             text-align: center;
 32         }
 33 
 34         form input {
 35             width: 100%;
 36             height: 30px;
 37             display: block;
 38             margin-bottom: 20px;
 39             padding-left: 10px;
 40             box-sizing: border-box;
 41         }
 42 
 43         .mya {
 44             width: 100%;
 45             height: 30px;
 46             margin-bottom: 20px;
 47         }
 48 
 49         .mya a:nth-child(1) {
 50             float: left;
 51         }
 52 
 53         .mya a:nth-child(2) {
 54             float: right;
 55         }
 56 
 57         button {
 58             width: 100%;
 59             height: 40px;
 60             background-color: rgb(235, 235, 235);
 61             border: none;
 62         }
 63 
 64         button:active {
 65             box-shadow: 0 0 3px rgb(173, 172, 172);
 66             /* x偏移  y偏移  模糊值 颜色 */
 67         }
 68     </style>
 69 </head>
 70 <body>
 71     <form  method="post">
 72         <h2>注册界面</h2>
 73         <input id="username" type="text" placeholder="请输入账号" name="usernamekey">
 74         <input id="password" type="password" placeholder="请输入密码" name="passwordkey">
 75         <div class="mya">
 76             <a href="http://127.0.0.1:8000/sign">已有帐号</a>
 77         </div>
 78         <button id="login-btn" type="submit">登录</button>
 79     </form>
 80 
 81     <script>
 82         // let 定义一个变量
 83         let username = document.getElementById(username)
 84         let password = document.getElementById(password)
 85         let loginBtn = document.getElementById(login-btn)
 86             // js里面不允许出现 -
 87 
 88         //一般的交互事件
 89         // onclick 点击事件
 90         // onmousemove  鼠标移入事件
 91         // onmouseout  鼠标移出事件
 92         // ondblclick  双击事件
 93         // onfocus  input框获取焦点事件
 94         // onblur  失焦事件
 95 
 96 
 97         loginBtn.onclick = function() {
 98             let usernamevalue = username.value
 99             let passwordvalue = password.value
100                 // console.log(usernamevalue, passwordvalue)
101                 // 便于检查的时候判断是否成功
102             if (!usernamevalue) {
103                 return alert(请输入正确的用户名)
104                     //return 跳出当前函数,并且返回后面的值
105             }
106             console.log(usernamevalue, passwordvalue)
107 
108         }
109     </script>
110 </body>
111 </html>

2.在templates中创建再一个html文件用于简单的登录网页

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>登录</title>
  6        <style>
  7         * {
  8             margin: 0;
  9             padding: 0;
 10         }
 11 
 12         body {
 13             background-color: rgb(235, 235, 235);
 14         }
 15 
 16         form {
 17             width: 400px;
 18             height: 320px;
 19             background-color: white;
 20             padding: 20px;
 21             box-sizing: border-box;
 22             position: absolute;
 23             left: 50%;
 24             top: 50%;
 25             transform: translate(-50%, -50%);
 26             /* 相对于现在所处位置的位移变化,x便偏移自己宽度的50%,y偏移自己高度的50% */
 27         }
 28 
 29         h2 {
 30             margin-bottom: 20px;
 31             text-align: center;
 32         }
 33 
 34         form input {
 35             width: 100%;
 36             height: 30px;
 37             display: block;
 38             margin-bottom: 20px;
 39             padding-left: 10px;
 40             box-sizing: border-box;
 41         }
 42 
 43         .mya {
 44             width: 100%;
 45             height: 30px;
 46             margin-bottom: 20px;
 47         }
 48 
 49         .mya a:nth-child(1) {
 50             float: left;
 51         }
 52 
 53         .mya a:nth-child(2) {
 54             float: right;
 55         }
 56 
 57         button {
 58             width: 100%;
 59             height: 40px;
 60             background-color: rgb(235, 235, 235);
 61             border: none;
 62         }
 63 
 64         button:active {
 65             box-shadow: 0 0 3px rgb(173, 172, 172);
 66             /* x偏移  y偏移  模糊值 颜色 */
 67         }
 68     </style>
 69 </head>
 70 <body>
 71     <form  method="post">
 72         <h2>登录界面</h2>
 73         <input id="username" type="text" placeholder="请输入账号" name="usernamekey">
 74         <input id="password" type="password" placeholder="请输入密码" name="passwordkey">
 75         <div class="mya">
 76             <a href="">忘记密码(正在开发中)</a>
 77             <a href="http://127.0.0.1:8000/register">注册</a>
 78         </div>
 79         <button id="login-btn" type="submit">登录</button>
 80     </form>
 81 
 82     <script>
 83         // let 定义一个变量
 84         let username = document.getElementById(username)
 85         let password = document.getElementById(password)
 86         let loginBtn = document.getElementById(login-btn)
 87             // js里面不允许出现 -
 88 
 89         //一般的交互事件
 90         // onclick 点击事件
 91         // onmousemove  鼠标移入事件
 92         // onmouseout  鼠标移出事件
 93         // ondblclick  双击事件
 94         // onfocus  input框获取焦点事件
 95         // onblur  失焦事件
 96 
 97 
 98         loginBtn.onclick = function() {
 99             let usernamevalue = username.value
100             let passwordvalue = password.value
101                 // console.log(usernamevalue, passwordvalue)
102                 // 便于检查的时候判断是否成功
103             if (!usernamevalue) {
104                 return alert(请输入正确的用户名)
105                     //return 跳出当前函数,并且返回后面的值
106             }
107             console.log(usernamevalue, passwordvalue)
108 
109         }
110     </script>
111 </body>
112 </html>

3.在templates中创建一个html文件用于登陆后的网页

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8     <h1>{{ uname }}你好,恭喜你开启了新世纪!!!</h1>
 9 </body>
10 </html>

4.在app01下的views.py中引入

from django.shortcuts import render, HttpResponse, redirect
from app01.models import User
 1 def register(request):
 2     """
 3     注册
 4     1.获取网页数据(用户名,密码)
 5     2.将用户名和密码写入数据库
 6     :param request:
 7     :return:
 8     """
 9     if request.method == "POST":
10         uname = request.POST.get(usernamekey)
11         pwd = request.POST.get(passwordkey)
12         print(uname, pwd)
13         if not all([uname, pwd]):
14             return HttpResponse("缺少用户名或密码")
15         User.objects.create(username=uname, password=pwd)
16         res = redirect("/page")
17         request.session["username"] = uname
18         return res
19     return render(request, "register.html")
20 
21 
22 def sign(request):
23     """
24     登录
25     1.获取网页数据(用户名,密码)
26     2.进行用户名和密码的校验
27     :param request: 
28     :return: 
29     """
30     if request.method == "POST":
31         uname = request.POST.get(usernamekey)  # 获取网页
32         pwd = request.POST.get(passwordkey)
33         if User.objects.filter(username=uname, password=pwd):
34             return redirect("/page")
35         else:
36             return HttpResponse("登录失败账号或密码错误")
37     return render(request, "sign.html")
38 
39 
40 def page(request):
41     """
42     页面
43     1.获取session进行判断
44     2.存在正常进入,不存在返回注册界面
45     :param request: 
46     :return: 
47     """
48     uname = request.session.get("username")
49     print(uname)
50     if not uname:
51         return redirect("/register")
52     return render(request, "page.html", {"uname": uname})

 

前端(HTML)+预设(Django)+数据库(MySQL):用户注册及登录演示

上一篇:oracle修改归档日志路径与格式


下一篇:MySQL程序插入时间和数据库显示时间不一样(修改数据库时区)