Python Django 实现简单注册功能过程详解
本文详细介绍如何使用 Python Django 框架实现一个简单的用户注册功能。内容涵盖项目目录结构、views.py 视图逻辑编写、urls.py 路由配置以及前端 HTML 模板的创建。通过封装数据库操作类,将注册信息存入 MySQL 数据库,并演示了启动项目后的完整注册流程及结果验证。
项目初始化部分此处省略,具体步骤可参考《Python Django Vue 项目创建》一文。
项目的目录结构如下图所示:

接下来,我们需要编辑 views.py 文件以处理业务逻辑。
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
from django.shortcuts import render
from common.DBHandle import DataBaseHandle
import time
def djangoHello(request):
return HttpResponse('Hello Django!')
def index(request):
return render(request,'index.html')
def login(request):
print('login_func')
usn = request.POST['username']
pwd = request.POST['password']
host = '127.0.0.1'
username = 'username'
password = 'password'
database = 'dbname'
port = 3306
# 实例化 数据库 连接
DbHandle = DataBaseHandle(host, username, password, database, port)
localTime = time.localtime(time.time())
create_time = time.strftime("%Y-%m-%d %H:%M:%S", localTime)
sql = "insert into user(username,password,create_time) values ('%s','%s','%s')" % (usn, pwd, create_time)
DbHandle.insertDB(sql)
DbHandle.closeDb()
return render(request,'login.html')
随后,对 urls.py 进行配置,定义 URL 路由规则。
"""FirstWeb 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 fistWeb import views
urlpatterns = [
path('admin/', admin.site.urls),
path('hello/',views.djangoHello),
path('index/',views.index),
path('login/',views.login),
]
在应用目录下新建一个名为 templates 的文件夹,用于存放前端模板。
在该文件夹中创建 index.html 文件,作为注册页面的入口。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>FirstWeb</title>
</head>
<body>
<h1>信息注册</h1>
<!-- action="/login/" 这里是 提交后访问的路径,因此 要在 urls 添加改路径 -->
<form action="/login/" method="post">
{% csrf_token %}
用户名:<input type="text" name="username" id="usn"><br>
密 码:<input type="password" name="password" id="pwd"><br>
<input type="submit" value="注册">
</form>
</body>
</html>
接着创建 login.html 文件,用于展示注册成功后的页面。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>FirstWeb-登录</title> </head> <body> <h1>您好,您已注册成功!</h1> </body> </html>
下面介绍新增的 common 文件夹及其作用。
在 common 文件夹中添加一个用于封装数据库操作的类,以简化数据库交互。
# FileName : DBHandle.py
# Author : Adil
# DateTime : 2018/11/29 2:03 PM
# SoftWare : PyCharm
import pymysql
# username : adil
# password : helloyyj
class DataBaseHandle(object):
''' 定义一个 MySQL 操作类'''
def __init__(self,host,username,password,database,port):
'''初始化数据库信息并创建数据库连接'''
# 下面的赋值其实可以省略,connect 时 直接使用形参即可
self.host = host
self.username = username
self.password = password
self.database = database
self.port = port
self.db = pymysql.connect(self.host,self.username,self.password,self.database,self.port,charset='utf8')
# 这里 注释连接的方法,是为了 实例化对象时,就创建连接。不许要单独处理连接了。
#
# def connDataBase(self):
# ''' 数据库连接 '''
#
# self.db = pymysql.connect(self.host,self.username,self.password,self.port,self.database)
#
# # self.cursor = self.db.cursor()
#
# return self.db
def insertDB(self,sql):
''' 插入数据库操作 '''
self.cursor = self.db.cursor()
try:
# 执行sql
self.cursor.execute(sql)
# tt = self.cursor.execute(sql) # 返回 插入数据 条数 可以根据 返回值 判定处理结果
# print(tt)
self.db.commit()
print('执行成功')
except:
# 发生错误时回滚
self.db.rollback()
print('执行失败')
finally:
self.cursor.close()
def deleteDB(self,sql):
''' 操作数据库数据删除 '''
self.cursor = self.db.cursor()
try:
# 执行sql
self.cursor.execute(sql)
# tt = self.cursor.execute(sql) # 返回 删除数据 条数 可以根据 返回值 判定处理结果
# print(tt)
self.db.commit()
except:
# 发生错误时回滚
self.db.rollback()
finally:
self.cursor.close()
def updateDb(self,sql):
''' 更新数据库操作 '''
self.cursor = self.db.cursor()
try:
# 执行sql
self.cursor.execute(sql)
# tt = self.cursor.execute(sql) # 返回 更新数据 条数 可以根据 返回值 判定处理结果
# print(tt)
self.db.commit()
except:
# 发生错误时回滚
self.db.rollback()
finally:
self.cursor.close()
def selectDb(self,sql):
''' 数据库查询 '''
self.cursor = self.db.cursor()
try:
self.cursor.execute(sql) # 返回 查询数据 条数 可以根据 返回值 判定处理结果
data = self.cursor.fetchall() # 返回所有记录列表
print(data)
# 结果遍历
for row in data:
sid = row[0]
name = row[1]
# 遍历打印结果
print('sid = %s, name = %s'%(sid,name))
except:
print('Error: unable to fecth data')
finally:
self.cursor.close()
def closeDb(self):
''' 数据库连接关闭 '''
self.db.close()
if __name__ == '__main__':
DbHandle = DataBaseHandle('127.0.0.1','username','password','dbname',3306)
sql = "insert into JdwSpider(image_name,image_url,Spider_time) values ('%s','%s','%s')" % (
'1', '2', '2018-12-04 15:25:21')
DbHandle.insertDB(sql)
# DbHandle.insertDB('insert into test(name) values ("%s")'%('FuHongXue'))
# DbHandle.insertDB('insert into test(name) values ("%s")'%('FuHongXue'))
# DbHandle.selectDb('select * from test')
# DbHandle.updateDb('update test set name = "%s" where sid = "%d"' %('YeKai',22))
# DbHandle.selectDb('select * from test')
# DbHandle.insertDB('insert into test(name) values ("%s")'%('LiXunHuan'))
# DbHandle.deleteDB('delete from test where sid > "%d"' %(25))
# DbHandle.selectDb('select * from test')
DbHandle.closeDb()
上述代码共同实现了一个简易的用户注册页面,并将用户提交的信息保存到数据库的对应表中。
现在启动项目进行功能演示。

在浏览器地址栏输入访问地址:http://127.0.0.1:8000/index/。

点击“注册”提交按钮后,页面将跳转至登录成功页,效果如下所示:

检查数据库表,可以看到新增的用户记录已成功存入。

以上就是本文的全部内容,希望能为各位的学习提供有益的帮助,也欢迎大家继续支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













