快速用Django+mysql搭建网站_3_登录注册界面&正确性判断

上一篇:快速用Django+mysql搭建网站_2_连接数据库&初步建立网站

前面创建项目并连接上数据库,可以成功进入登录界面

接下来就是设计 登录注册界面 并且能 判断输入的账号密码是否正确

ps: 学习时是一步步来,由简单效果到最后成品,步骤比较冗杂,这里直接贴最后的代码

一、设计登录界面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
<form action="/polls/index/" method="post"> 
    {% csrf_token %}
    <p><label>用户名: </label><input name="user"/></p>
    <p><label>密码: </label><input name="pwd"/></p>
    <input type="submit" value="登录">
    <a href="/polls/to_register/">注册</a>
</form>
</body>
</html>

  csrf 全称是 Cross Site Request Forgery。这是Django提供的防止伪装提交请求的功能。

  点击登录或注册,将不同的路径发给 polls/urls.py 进行匹配,调用不同的视图函数

二、注册界面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册</title>
</head>
<body>
<form action="/polls/register/" method="post">
    {% csrf_token %}
    <p><label>用户名: </label><input name="user"/></p>
    <p><label>密码: </label><input name="pwd"/></p>
    <input type="submit" value="注册">
</form>
</body>
</html>

三、配置polls的urls

from django.urls import path
from . import views

urlpatterns = [
    path('', views.toLogin_view ),
    path('index/', views.Login_view ),
    path('to_register/', views.toRegister_view ),
    path('register/', views.Register_view ),
]

四、模型 models.py

from django.db import models

class StudentInfo(models.Model):    # Django的模型在MySQL数据库中其实就是一张数据表
    stu_id = models.CharField(primary_key=True, max_length=20,)
    stu_name = models.CharField(max_length=20)
    stu_pwd = models.CharField(max_length=20)

  执行指令,将数据模型迁移到数据库:

    py manage.py makemigrations polls

    py manage.py migrate

  此时,用navicat查看,test数据库中会多出一张polls_studentinfo表

  往里面输入数据,登录时会将账号密码与表内数据进行配对,不正确则无法登录

  注册时,正确输入账号密码后,会在表内增加一条数据

  补充:Django模型使用ORM,即对象关系映射,用于实现面向对象编程语言里不同类型系统的数据之间的转换。ORM 会将 Python 代码转成为 SQL 语句,SQL 语句通过 pymysql 传送到数据库服务端,在数据库中执行 SQL 语句并将结果返回。

五、视图 views.py

from django.http import HttpResponse
from django.shortcuts import render
from .models import *

# 渲染登录界面
def toLogin_view(request):
    return render(request, 'login.html')

# 点击登录后做的逻辑判断
def Login_view(request):
    u = request.POST.get("user",'')
    p = request.POST.get("pwd",'')

    if u and p:
        c = StudentInfo.objects.filter(stu_name = u, stu_pwd = p).count()   # 能获取的数据的条数
        if c >= 1:
            return HttpResponse("登录成功!")
        else:
            return HttpResponse("账号密码错误!")
    else:
        return HttpResponse("用户名或密码不能为空!")

# 渲染注册界面
def toRegister_view(request):
    return render(request, 'register.html')

# 点击注册后做的逻辑判断
def Register_view(request):
    u = request.POST.get("user", '')
    p = request.POST.get("pwd", '')
    if u and p:
        stu = StudentInfo(stu_name = u, stu_pwd = p)
        stu.save()
        return HttpResponse("注册成功!")
    else:
        return HttpResponse("请输入完整的账号和密码!")

  

  视图显示和请求处理都分成两个函数处理。

  最后,启动项目,进入 http://127.0.0.1:8000/polls/ 查看效果

  以上是所有内容:

    1. 创建Django项目

    2. 连接mysql 并创建数据库

    3. 设计登录注册界面并且能和数据库交互进行判断

 

附加:在五中,Django的模型映射到数据库中。反过来,数据库也可以反映射到model.py中

输入指令:py manage.py inspectdb > polls/models.py

然后打开model.py可以看到,数据库中的数据表以模型的方式输出在里面

 

posted on 2022-03-26 21:00  德德的笔记本  阅读(525)  评论(0编辑  收藏  举报