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操作json数据的一个简单例子
Apr 17 Python
在Python中使用AOP实现Redis缓存示例
Jul 11 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
Apr 11 Python
Python 实现字符串中指定位置插入一个字符
May 02 Python
Flask实现跨域请求的处理方法
Sep 27 Python
python 读取文件并把矩阵转成numpy的两种方法
Feb 12 Python
快速解决vue.js 模板和jinja 模板冲突的问题
Jul 26 Python
详解python破解zip文件密码的方法
Jan 13 Python
用opencv给图片换背景色的示例代码
Jul 08 Python
python map比for循环快在哪
Sep 21 Python
python+selenium自动化实战携带cookies模拟登陆微博
Jan 19 Python
Python数据可视化之用Matplotlib绘制常用图形
Jun 03 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
浅谈apache和nginx的rewrite的区别
2013/02/22 PHP
取得单条网站评论以数组形式进行输出
2014/07/28 PHP
php常用字符串比较函数实例汇总
2014/11/24 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
IE浏览器打印的页眉页脚设置解决方法
2009/12/08 Javascript
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
js select常用操作控制代码
2010/03/16 Javascript
js中数组Array的一些常用方法总结
2013/08/12 Javascript
Javascript函数的参数
2015/07/16 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
nodejs实现OAuth2.0授权服务认证
2017/12/27 NodeJs
小程序登录态管理的方法示例
2018/11/13 Javascript
p5.js实现故宫橘猫赏秋图动画
2019/10/23 Javascript
[09:40]DAC2018 4.5 SOLO赛 MidOne vs Miracle
2018/04/06 DOTA
python字典get()方法用法分析
2015/04/17 Python
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
Python实现配置文件备份的方法
2015/07/30 Python
python利用正则表达式搜索单词示例代码
2017/09/24 Python
Python实现两款计算器功能示例
2017/12/19 Python
python实现逆序输出一个数字的示例讲解
2018/06/25 Python
详解Python3的TFTP文件传输
2018/06/26 Python
python获取交互式ssh shell的方法
2019/02/14 Python
使用selenium模拟登录解决滑块验证问题的实现
2019/05/10 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
2020/01/25 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
机械电子工程专业推荐信范文
2013/11/20 职场文书
麦当劳辞职信范文
2014/01/18 职场文书
见习期自我鉴定
2014/01/31 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
技术负责人岗位职责
2015/02/10 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
爱国教育主题班会
2015/08/14 职场文书
python 爬取吉首大学网站成绩单
2021/06/02 Python
总结Python使用过程中的bug
2021/06/18 Python
python+pytest接口自动化之token关联登录的实现
2022/04/06 Python