快速用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可以看到,数据库中的数据表以模型的方式输出在里面