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编程生成随机用户名及密码的方法示例
May 05 Python
python编写Logistic逻辑回归
Dec 30 Python
Python中反射和描述器总结
Sep 23 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
Aug 02 Python
django组合搜索实现过程详解(附代码)
Aug 06 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
Aug 12 Python
Django实现auth模块下的登录注册与注销功能
Oct 10 Python
django 取消csrf限制的实例
Mar 13 Python
Python colormap库的安装和使用详情
Oct 06 Python
详解Python利用configparser对配置文件进行读写操作
Nov 03 Python
python保存图片的四个常用方法
Feb 28 Python
5个pandas调用函数的方法让数据处理更加灵活自如
Apr 24 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
动态新闻发布的实现及其技巧
2006/10/09 PHP
PHP 变量的定义方法
2010/01/26 PHP
php实现网页缓存的工具类分享
2015/07/14 PHP
js检查页面上有无重复id的实现代码
2013/07/17 Javascript
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
BootStrap制作导航条实例代码
2016/05/06 Javascript
AngularJs Javascript MVC 框架
2016/06/20 Javascript
浅谈JS正则表达式的RegExp对象和括号的使用
2016/07/28 Javascript
jQuery实现的自定义滚动条实例详解
2016/09/20 Javascript
JS创建对象的写法示例
2016/11/04 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
2016/11/28 Javascript
jQuery EasyUi 验证功能实例解析
2017/01/06 Javascript
vue2 前端搜索实现示例
2018/02/26 Javascript
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
详解html-webpack-plugin插件(用法总结)
2018/09/12 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
2019/09/05 Javascript
Vue数字输入框组件使用方法详解
2020/02/10 Javascript
解决js中的setInterval清空定时器不管用问题
2020/11/17 Javascript
用实例说明python的*args和**kwargs用法
2013/11/01 Python
python下os模块强大的重命名方法renames详解
2017/03/07 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
Ubuntu+python将nii图像保存成png格式
2019/07/18 Python
tensor和numpy的互相转换的实现示例
2019/08/02 Python
python global和nonlocal用法解析
2020/02/03 Python
Python3开发环境搭建详细教程
2020/06/18 Python
django模型类中,null=True,blank=True用法说明
2020/07/09 Python
新加坡最受追捧的体验平台:Hapz
2018/01/01 全球购物
JustFab加拿大:女鞋、靴子、手袋和服装在线
2018/05/18 全球购物
高级Java程序员面试题
2016/06/23 面试题
高中军训感言400字
2014/02/24 职场文书
文化建设工作方案
2014/05/12 职场文书
会员活动策划方案
2014/08/19 职场文书
统计学教授推荐信
2014/09/18 职场文书
2015初一年级组工作总结
2015/07/24 职场文书