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中的元祖(Tuple)和字典(Dict)
Apr 21 Python
Python二进制串转换为通用字符串的方法
Jul 23 Python
Python实现多级目录压缩与解压文件的方法
Sep 01 Python
python如何制作缩略图
Apr 30 Python
Python使用pyautocad+openpyxl处理cad文件示例
Jul 11 Python
Python3 批量扫描端口的例子
Jul 25 Python
Win下PyInstaller 安装和使用教程
Dec 25 Python
python将图片转base64,实现前端显示
Jan 09 Python
详解在Python中使用Torchmoji将文本转换为表情符号
Jul 27 Python
python3中calendar返回某一时间点实例讲解
Nov 18 Python
flask项目集成swagger的方法
Dec 09 Python
Python爬虫框架之Scrapy中Spider的用法
Jun 28 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+DBM的同学录程序(1)
2006/10/09 PHP
php生成缩略图示例代码分享(使用gd库实现)
2014/01/20 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
2014/06/26 PHP
Laravel 4 初级教程之视图、命名空间、路由
2014/10/30 PHP
PHP自定义函数获取URL中一级域名的方法
2016/08/23 PHP
php源码之将图片转化为data/base64数据流实例详解
2016/11/27 PHP
PHP正则删除HTML代码中宽高样式的方法
2017/06/12 PHP
使用php自动备份数据库表的实现方法
2017/07/28 PHP
PHP多进程通信-消息队列使用
2019/03/08 PHP
php探针不显示内存解决方法
2019/09/17 PHP
Javascript的IE和Firefox兼容性汇编(zz)
2007/02/02 Javascript
IE DOM实现存在的部分问题及解决方法
2009/07/25 Javascript
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
公共js在页面底部加载的注意事项介绍
2013/07/18 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
jQuery中prev()方法用法实例
2015/01/08 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
2016/01/26 Javascript
jQuery+HTML5+CSS3制作支持响应式布局时间轴插件
2016/08/10 Javascript
ES6新数据结构Set与WeakSet用法分析
2017/03/31 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
Nodejs libuv运行原理详解
2019/08/21 NodeJs
vue+axios全局添加请求头和参数操作
2020/07/24 Javascript
详细探究Python中的字典容器
2015/04/14 Python
python实现汉诺塔方法汇总
2016/07/25 Python
python配置grpc环境
2019/01/01 Python
python代码xml转txt实例
2020/03/10 Python
python 下载文件的几种方法汇总
2021/01/06 Python
SEPHORA新西兰官方网站:购买化妆品和护肤品
2016/12/02 全球购物
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
2014年清明节寄语
2014/04/03 职场文书
建筑工地门卫岗位职责
2014/04/30 职场文书
初中团委工作总结
2015/08/13 职场文书
《春酒》教学反思
2016/02/22 职场文书