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下的XSLT API进行web开发的简单教程
Apr 15 Python
在Python的Django框架下使用django-tagging的教程
May 30 Python
解析Python中while true的使用
Oct 13 Python
Python使用PyCrypto实现AES加密功能示例
May 22 Python
深入理解Django的自定义过滤器
Oct 17 Python
Python获取CPU、内存使用率以及网络使用状态代码
Feb 08 Python
Python基于多线程操作数据库相关问题分析
Jul 11 Python
Python谱减法语音降噪实例
Dec 18 Python
Python 内置变量和函数的查看及说明介绍
Dec 25 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
Jun 08 Python
python 视频下载神器(you-get)的具体使用
Jan 06 Python
python urllib和urllib3知识点总结
Feb 08 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动态创建Web站点的方法
2011/08/14 PHP
web目录下不应该存在多余的程序(安全考虑)
2012/05/09 PHP
服务器变量 $_SERVER 的深入解析
2013/07/02 PHP
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
php递归创建目录的方法
2015/02/02 PHP
PHP面向对象详解(三)
2015/12/07 PHP
PHP中的函数声明与使用详解
2017/05/27 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
JQuery加载图片自适应固定大小的DIV
2013/09/12 Javascript
JQuery实现table行折叠效果以JSON做数据源
2014/05/26 Javascript
jQuery中on()方法用法实例
2015/01/19 Javascript
vue mint-ui学习笔记之picker的使用
2017/10/11 Javascript
Jquery cookie插件实现原理代码解析
2020/08/04 jQuery
解决vuex刷新数据消失问题
2020/11/12 Javascript
布同自制Python函数帮助查询小工具
2011/03/13 Python
Python实现小数转化为百分数的格式化输出方法示例
2017/09/20 Python
python3利用Socket实现通信的方法示例
2019/05/06 Python
python验证码图片处理(二值化)
2019/11/01 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
python编程进阶之异常处理用法实例分析
2020/02/21 Python
只要五步 就可以用HTML5/CSS3快速制作便签贴特效(图)
2012/06/04 HTML / CSS
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
即时搜索数百万张门票:SeatsForEveryone.com
2018/08/26 全球购物
体育学院毕业生自荐信
2013/11/03 职场文书
店长岗位职责
2013/11/21 职场文书
儿媳婚宴答谢词
2014/01/14 职场文书
学生安全责任书
2014/04/15 职场文书
政府绩效管理实施方案
2014/05/04 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
2014年仓库管理员工作总结
2014/11/18 职场文书
2015年社区卫生工作总结
2015/04/21 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书