1、创建一个html文件用于简单的网页注册demo

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册</title>
</head>
<body>
<!--表单域,action用于将获取的到信息提交到后台地址--> <form action="save" method="get">
<span>
用户:<input type="text" name="username">
</span>
<br>
<span>
密码:<input type="password" name="password">
</span>
<br>
<span>
<input type="submit" name="submit1" value="注册">
</span> </form>
</body>
</html>

2、创建一个html文件用于简单的网页登录demo

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body>
<form action="query" method="get">
<span>
用户:<input type="text" name="username">
</span>
<br>
<span>
密码:<input type="password" name="password">
</span>
<br>
<span>
<input type="submit" name="submit1" value="登录">
</span> </form>
</body>
</html>

3、创建一个Django项目,并将刚才的两个html文件放入template模板文件夹中



4、打开Django项目下默认生成的urls.py文件,进行一些业务功能的编辑

"""Django01 URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/2.1/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from django.shortcuts import render
from django.shortcuts import HttpResponse
import pymysql
#登录页面
def login(request):
#指定要访问的页面,render的功能:讲请求的页面结果提交给客户端
return render(request,'login.html')
#注册页面
def regiter(request):
return render(request,'regiter.html')
#定义一个函数,用来保存注册的数据
def save(request):
has_regiter = 0#用来记录当前账号是否已存在,0:不存在 1:已存在
a = request.GET#获取get()请求
#print(a)
#通过get()请求获取前段提交的数据
userName = a.get('username')
passWord = a.get('password')
#print(userName,passWord)
#连接数据库
db = pymysql.connect('127.0.0.1','root','123','db2')
#创建游标
cursor = db.cursor()
#SQL语句
sql1 = 'select * from user1'
#执行SQL语句
cursor.execute(sql1)
#查询到所有的数据存储到all_users中
all_users = cursor.fetchall()
i = 0
while i < len(all_users):
if userName in all_users[i]:
##表示该账号已经存在
has_regiter = 1 i += 1
if has_regiter == 0:
# 将用户名与密码插入到数据库中
sql2 = 'insert into user1(username,password) values(%s,%s)'
cursor.execute(sql2,(userName,passWord))
db.commit()
cursor.close()
db.close()
return HttpResponse('注册成功')
else: cursor.close()
db.close()
return HttpResponse('该账号已存在') def query(request):
a = request.GET
userName = a.get('username')
passWord = a.get('password')
user_tup = (userName,passWord)
db = pymysql.connect('127.0.0.1','root','123','db2')
cursor = db.cursor()
sql = 'select * from user1'
cursor.execute(sql)
all_users = cursor.fetchall()
cursor.close()
db.close()
has_user = 0
i = 0
while i < len(all_users):
if user_tup == all_users[i]:
has_user = 1
i += 1
if has_user == 1:
return HttpResponse('登录成功')
else:
return HttpResponse('用户名或密码有误')
urlpatterns = [
path('admin/', admin.site.urls),#系统默认创建的
path('login/',login),#用于打开登录页面
path('regiter/',regiter),#用于打开注册页面
path('regiter/save',save),#输入用户名密码后交给后台save函数处理
path('login/query',query)#输入用户名密码后交给后台query函数处理 ]

5、运行整个Django项目,访问相应的url



数据库数据情况:







后台状态信息:



再次查看数据库数据:



6、再次进行登录操作,打开登录的url





测试一个用户名错误情况:

前端(HTML)+后端(Django)+数据库(MySQL):用户注册及登录演示的更多相关文章

  1. 关于Django数据库mysql连接错误问题Connection to api@localhost failed. [08001] Could not create connection to d

    Connection to api@localhost failed. [08001] Could not create connection to d 错误类型 django连接mysql数据库错误 ...

  2. Django+pycharm+mysql 实现用户登录/注册(Django五)

    首先是让Django项目与mysql数据库初步建立连接 具体做法见:pycharm连接mysql(注意其中第二步MySQL驱动最好安装最新版的) 这里讲一下我在做这一步遇到的问题.一般Driver 那 ...

  3. Django 数据库mysql到models的映射方法

    Django自动生成models 如果数据库表已经存在,执行命令,可以自动生成Models模型,实现models与数据表的映射 >>> python manage.py inspec ...

  4. Django学习笔记(9)—— 开发用户注册与登录系统

    一,项目题目: 开发用户注册与登录系统 该项目主要练习使用Django开发一个用户注册与登录的系统,通过这个项目然后巩固自己这段时间所学习的Django知识. 二,项目需求: 开发一个简单的用户登录与 ...

  5. 初识Django之前端后端与数据库的配置

    目录 一.静态文件配置 二.关于form表单的补充 三.post请求出现403问题 四.request方法初识 4.1判断当前请求方式 4.2request.POST与request.GET 五.py ...

  6. Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查

    本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...

  7. Django+Ajax+Mysql实现数据库数据的展示

    最近老师让搞一个系统,仅仅展示一下数据库的数据 在做海底捞时,是交接的师兄的项目,用的语言是java,框架是SSM(Spring.SpringMVC.MyBatis),这次我准备用Python写,前端 ...

  8. python后端从数据库请求数据给到前端的具体实现

    先来贴一窜代码让大家理解前端/后端/数据库的工作原理, 首先简要说明:前端向后端请求数据,后端根据前端请求数据的类别分析其需求,并连接到数据库获取相应数据: 来一段简单的实例代码模拟淘宝商城: 前端代 ...

  9. [技术博客]django连接mysql数据库的方法及部分问题的解决方法

    配置机器介绍 操作系统:Ubuntu 18.04.2 LTS 64位 python版本:Python 3.6.7 Django版本:Django 2.2 MySql版本:5.7.26 数据库选择 我们 ...

随机推荐

  1. 十六章 综合实例——《跟我学Shiro》

    目录贴:跟我学Shiro目录贴 简单的实体关系图 简单数据字典 用户(sys_user) 名称 类型 长度 描述 id bigint 编号 主键 username varchar 100 用户名 pa ...

  2. iOS-GCD处理后台线程和UI线程的交互

    一个例子: 在iPhone上做一个下载网页的功能,就是:在iPhone上放一个按钮,单击按钮时,显示一个转动的圆圈,表示正在进行下载,下载完成后,将内容加载到界面上的一个文本控件上. 使用GCD前: ...

  3. Django:reverse反转URL并传递参数

    需求: 假设在文章详情页评论文章后需要重新刷新显示该页面(原始方法,提交评论表单为form方式,未采用ajax方式), 提交评论后代码会走comment的视图函数,等数据入库之后需要将页面重新定位到文 ...

  4. AWS 云上安全最佳实践

    目录 一.账号及访问管理 1.1.多 VPC 还是多账号模式 1.2.多账户模式,选择主 master 账号 二.系统架构安全 2.1.子网建议 2.2.每个可用区子网划分 2.3.安全组的建议 2. ...

  5. 查询 ip占用导致ip不通的 问题 查IP对应的mac地址

    IP冲突,  同一个IP配到了多余1台的机器上 ,导致IP 不通的情况,此时需要查询 都有哪台机器配置了这个IP,用 arping 命令, 具体命令 类似于 ping ,直接 arping + 目标地 ...

  6. 日常工作问题解决:Redhat6.5--解决yum无法正常安装配置问题

    1.问题描述 解决RedHat6.5下yum功能不能用问题: 在redhat6.5下使用yum安装时,会提示:This system is not registered to Red Hat Subs ...

  7. The Select mechanism in linux for block mechanism

    Today, some one mention theknowledge of Select Mechanism. It's better to konw something about it ! O ...

  8. [转帖]AIDA64 6.10版发布:全面支持中国兆芯、海光x86 CPU

    AIDA64 6.10版发布:全面支持中国兆芯.海光x86 CPU https://www.cnbeta.com/articles/soft/892877.htm 支持国产x86了 作为硬件识别工具领 ...

  9. 第二坑:Linux发布项目

    在这里踩过两个坑: 1.第一个是上传文件的时候,不知道是什么原因,上传失败了,然后发布新版本的时候,依然用的上个版本的包,导致工作出现重大失误. 谨记:上传文件的时候,检查一下上传文件和本地文件的时间 ...

  10. C++视频读取与视频保存

    VideoCapture cap("E:\\122.avi"); //计算视频帧数 int VedioFPS = cap.get(CV_CAP_PROP_FPS); //cout ...