Python Django 实现简单注册功能过程详解


Posted in Python onJuly 29, 2019

项目创建略,可参考Python Django Vue 项目创建。

目录结构如下

Python Django 实现简单注册功能过程详解

编辑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

"""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 文件夹

并创建html文件 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文件

添加一个数据库封装的类。

# 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()

以上代码实现了一个简单的注册页面,并将注册信息存放到数据库表中。

启动项目演示

Python Django 实现简单注册功能过程详解

打开浏览器输入url:http://127.0.0.1:8000/index/

Python Django 实现简单注册功能过程详解

点击注册提交按钮,页面跳转如下

Python Django 实现简单注册功能过程详解

查看数据库表,可以看到新增的用户信息。

Python Django 实现简单注册功能过程详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
通过Python 获取Android设备信息的轻量级框架
Dec 18 Python
详解Python nose单元测试框架的安装与使用
Dec 20 Python
Python多线程扫描端口代码示例
Feb 09 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
Mar 04 Python
python 文本单词提取和词频统计的实例
Dec 22 Python
正确理解Python中if __name__ == '__main__'
Jan 24 Python
Python/Django后端使用PIL Image生成头像缩略图
Apr 30 Python
解决python脚本中error: unrecognized arguments: True错误
Apr 20 Python
通过实例了解python__slots__使用方法
Sep 14 Python
几款好用的python工具库(小结)
Oct 20 Python
Python实现粒子群算法的示例
Feb 14 Python
Django实现WebSocket在线聊天室功能(channels库)
Sep 25 Python
Django models.py应用实现过程详解
Jul 29 #Python
pycharm中显示CSS提示的知识点总结
Jul 29 #Python
pandas 如何分割字符的实现方法
Jul 29 #Python
python自定义时钟类、定时任务类
Feb 22 #Python
python Pandas如何对数据集随机抽样
Jul 29 #Python
python Django 创建应用过程图示详解
Jul 29 #Python
使用Pandas对数据进行筛选和排序的实现
Jul 29 #Python
You might like
php入门学习知识点六 PHP文件的读写操作代码
2011/07/14 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
2017/02/23 PHP
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
PHP实现的简单排列组合算法应用示例
2017/06/20 PHP
PHP回调函数与匿名函数实例详解
2017/08/16 PHP
FormValidate 表单验证功能代码更新并提供下载
2008/08/23 Javascript
event对象获取方法总结在google浏览器下测试
2013/11/03 Javascript
一个不错的仿携程自定义数据下拉选择select
2014/09/01 Javascript
13个PHP函数超实用
2015/10/21 Javascript
微信小程序 navigation API实例详解
2016/10/02 Javascript
input框中的name和id的区别
2016/11/16 Javascript
jQuery上传插件webupload使用方法
2017/08/01 jQuery
详解react、redux、react-redux之间的关系
2018/04/11 Javascript
javascript使用正则实现去掉字符串前面的所有0
2018/07/23 Javascript
微信小程序顶部导航栏滑动tab效果
2019/01/28 Javascript
vue 实现滚动到底部翻页效果(pc端)
2019/07/31 Javascript
浅析 Vue 3.0 的组装式 API(一)
2020/08/31 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
2021/03/01 jQuery
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
python中format()函数的简单使用教程
2018/03/14 Python
CentOS 7 安装python3.7.1的方法及注意事项
2018/11/01 Python
Python实现带参数的用户验证功能装饰器示例
2018/12/14 Python
Python3 实现减少可调用对象的参数个数
2019/12/20 Python
详解Flask前后端分离项目案例
2020/07/24 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
2020/09/16 Python
html5绘制时钟动画
2014/12/15 HTML / CSS
HTML5新增加标签和功能概述
2016/09/05 HTML / CSS
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
大学生四年生活自我鉴定
2013/11/21 职场文书
《雷雨》教学反思
2014/02/20 职场文书
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
2014村党支部书记党建工作汇报材料
2014/11/02 职场文书
工程部岗位职责范本
2015/04/11 职场文书
一文搞懂如何实现Go 超时控制
2021/03/30 Python
mybatis 解决从列名到属性名的自动映射失败问题
2021/06/30 Java/Android