本篇文章实现注册登录需求
注册模块创建一个子应用(models)
登录模块创建一个子应用(progects)
文章目录
前言
前提:
1.创建Django项目
2.创建两个子应用
提示:以下是本篇文章正文内容,下面案例可供参考
一、链接mysql数据库
1-1创建一个mysql数据库
1-2修改setting中配置
代码如下(示例):
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'ceshi_01',
'HOST': 'localhost',
'PORT': '3306',
'USER': 'root',
'PASSWORD': '',
}
}
二、定义model
代码如下(示例):
from django.db import models
# Create your models here.
class Student_Models(models.Model):
sname = models.CharField(max_length=30,unique=True)
spwd = models.CharField(max_length=30)
# 定义表名
class Meta:
db_table = 't_stu'
三、映射,数据迁移
3-1迁移步骤一:生成迁移文件(python manage.py makemigrations)
3-2迁移步骤二:执行迁移(python manage.py migrate)
四、实现需求
需求1:默认访问地址是登录页,登录数据不存在返回至注册页;url:http://127.0.0.1:8000/login/
需求2:注册页面进行注册,入库成功后,跳转至登录页; url:http://127.0.0.1:8000/register/show/
4-1.根路径url
代码如下(示例):
from django.contrib import admin
from django.urls import path, include,re_path
from APPS import progects_views
# 根路由:可以指向一个函数,也可以指向一个应用
urlpatterns = [
path('admin/', admin.site.urls),
re_path('',include('progects.urls')), #通过子应用
re_path('^register/',include('models.urls')),
]
4-2.登录子应用url
代码如下(示例):
from django.urls import path, re_path
from progects import views
urlpatterns = [
re_path('login/$', views.login_view),
]
4-3.登录子应用视图
代码如下(示例):
from django.http import HttpResponse
from django.shortcuts import render
from models.models import Student_Models
# Create your views here.
# 函数或者类的视图
# 登录 url:http://127.0.0.1:8000/login/
def login_view(request):
# 1.默认是到登录页,获取登录页面
method = request.method
if method == 'GET':
return render(request,'login.html')
# 2.获取登录数据
else:
username = request.POST.get('usename','')
password = request.POST.get('pwd','')
# 2.1 查询数据库,数据库数据存在登录成功
count = Student_Models.objects.filter(sname=username,spwd=password).count()
if count != 0:
return HttpResponse('登录成功')
# 2.2查询数据库,数据不存在,返回到注册页面
else:
return render(request,'register.html')
4-4.登录login.html
代码如下(示例):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录页面</title>
</head>
<body>
{# action 从根路径开始写#}
<form action="login/" method="post">
<p>
<label for="uname">用户名:</label><input type="text" name="usename" id="uname">
</p>
<p>
<label for="pwd">密码:</label><input type="password" name="pwd" id="pwd">
</p>
<p>
<input type="submit" value="登录">
</p>
</form>
</body>
</html>
4-5.注册子应用url
代码如下(示例):
from django.contrib import admin
from django.urls import path, include,re_path
from models import views
# 根路由:可以指向一个函数,也可以指向一个应用
urlpatterns = {
# re_path('', views.index_views),
re_path('show/$', views.register_view)
}
4-6.注册子应用视图
代码如下(示例):
# url:http://127.0.0.1:8000/register/show/
# 1.实现注册
# 2.注册成功以后,查询数据返回数据至页面
def register_view(request):
# 一:实现注册
# 1.获取注册页面
method = request.method
if method == 'GET':
return render(request,'register.html')
# 2.获取页面提交信息
else:
username = request.POST.get('uname','')
password = request.POST.get('pwd','')
# 3.校验页面信息,是否数据库中存在
count = Student_Models.objects.filter(sname = username ,spwd=password).count()
# 3.1 不存在,入库成功后,跳转至登录页面
if count == 0:
stu = Student_Models(sname=username,spwd=password)
stu.save()
return render(request,'login.html')
# 3.2 存在,返回响应
else:
return HttpResponse("已经存在,请重新试")
4-7.注册前端代码
代码如下(示例):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册页面</title>
</head>
<body>
<form action="/register/show/" method="post">
{# 防止POST提交报错:setting中注释掉跨域请求#}
{# label里面的for标签内容对应的是后面的id,作用:当用户点击在用户名这三个字的时候,文本框中会被鼠标点中#}
<p>
<label for="ua">用户名:</label> <input type="text" name="uname" id="ua">
</p>
<p>
<label for="pas">密码:</label> <input type="password" name="pwd" id="pas">
</p>
<input type="submit" value="注册">
</form>
</body>
</html>