Django基础篇(二)与mysql配合使用
需求:模拟实现学员管理系统。<*_* 从基础做起>
表结构如下: 班级/学生/老师
班级表: id title
1 xx
2 xx
学生表: id name 班级ID(foreign key)
1 xxx 1
2 xxx 2
老师表: id name
1 xxxx
2 xxx
老师班级关系表(多对多):
id tid(教师id) cid (班级id)
1 1 1
1 2 2
......
1.单表操作
- 增
- 删
- 改
- 查
import pymysql
# 连接mysql
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root123456', db='studentManager',
charset='utf8')
# 此处的cursor 一定要写成字典类型. 否则查询结构 返回元祖类型
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
cursor.execute('select id,title from class')
# 返回多个值
class_list = cursor.fetchall()
cursor.close()
conn.close()
return render(request, 'classes.html', {'class_list': class_list})
连接mysql
踩坑1:携带查询结果无法在页面上通过循环渲染?
# 通过情况下连接惯性写的是
错误写法:cursor = conn.cursor () # 此处这样写cursor查询结束会将结果封装成元祖类型... 之后通过for循环取值就稳凉...
正确写法:cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 此处这样写cursor查询结果会封装成字典类型. 取值so esay...
--------------------------------------------------------------------------------------------
踩坑2:return render(request, 'classes.html', {'class_list': class_list}) 为撒第一个参数request飘红 ?
麻溜溜去检查函数的形式参数中第一个参数是否写了request...
整体单表操作的思路如下:通过form表单进行数据获取和传递到后台。注意事项有:
- 增、删、改操作结束后重定向到展示班级信息页;
- 携带id传递到后台,一波查询获取数据,返回到修改页.
# 显示班级列表
# 参数列表上有一个request,切记,切记
def classes(request):
# 连接mysql
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root123456', db='studentManager',
charset='utf8')
# 此处的cursor 一定要写成字典类型. 否则查询结构 返回元祖类型
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
cursor.execute('select id,title from class')
# 返回多个值
class_list = cursor.fetchall()
cursor.close()
conn.close()
return render(request, 'classes.html', {'class_list': class_list})
展示班级信息--->查
def add_class(request):
if request.method == 'GET':
return render(request, 'add_class.html')
else:
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root123456', db='studentManager',
charset='utf8')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
v = request.POST.get('title')
cursor.execute('insert into class(title) values (%s)', [v, ])
conn.commit()
cursor.close()
conn.close()
return redirect('/classes/')
添加班级信息--->增
def edit_class(request):
# 点击编辑按钮,根据Id获取到class信息 传入到下一个页面中
if request.method == 'GET':
id = request.GET.get('nid')
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root123456', db='studentManager',
charset='utf8')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
cursor.execute('select id,title from class where id = %s', [id, ])
result = cursor.fetchone()
cursor.close()
conn.close()
return render(request, 'edit_class.html', {'result': result})
else:
id = request.POST.get('id')
title = request.POST.get('title')
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root123456', db='studentManager',
charset='utf8')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
v = request.POST.get('title')
cursor.execute('update class set title =%s where id=%s', [title, id])
conn.commit()
cursor.close()
conn.close()
return redirect('/classes/')
编辑班级信息页--->查&改
def del_class(request):
id = request.GET.get('nid')
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root123456', db='studentManager',
charset='utf8')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
cursor.execute('delete from class where id = %s', [id, ])
conn.commit()
cursor.close()
conn.close()
return redirect('/classes/')
删除班级信息---->删
注:对于单表操作表单信息量不是很大的情况下,使用Ajax操作会更加丝滑...
Django基础篇(二)与mysql配合使用的更多相关文章
- Django 基础篇(二)视图与模板
视图 在django中,视图对WEB请求进行回应 视图接收reqeust对象作为第一个参数,包含了请求的信息 视图就是一个Python函数,被定义在views.py中 #coding:utf- fro ...
- 01: Django基础篇
目录:Django其他篇 01:Django基础篇 02:Django进阶篇 03:Django数据库操作--->Model 04: Form 验证用户数据 & 生成html 05:Mo ...
- php基础篇-二维数组排序 array_multisort
原文:php基础篇-二维数组排序 array_multisort 对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下: array_multisort(a ...
- Django基础(二)
Django基础(二) http://www.cnblogs.com/wupeiqi/articles/4508271.html
- python的django基础篇
一.Django基础 Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站! Django的特点: 强大的数据库功能:拥有强大的数据库操作接口(QueryS ...
- python3之Django基础篇
一.Django基础 Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站! Django的特点: 强大的数据库功能:拥有强大的数据库操作接口(QueryS ...
- 2.高并发教程-基础篇-之nginx+mysql实现负载均衡和读写分离
技巧提示:mysql读写分离搭建好之后,配合nginx的负载均衡,可以高效的mysql的集群性能,同时免去麻烦的query分流.比如,sever1收到的请求就专门链接slave1从mysql读取数据, ...
- django 基础篇
jdango 简介: 一个可以使Web开发工作愉快并且高效的Web开发框架. 使用Django,使你能够以 小的代价构建和维护高质量的Web应用. Python的WEB框架有Django.Tornad ...
- JavaScript笔记基础篇(二)
基础篇主要是总结一些工作中遇到的技术问题是如何解决的,应为本人属于刚入行阶段技术并非大神如果笔记中有哪些错误,或者自己的一些想法希望大家多多交流互相学习. 1.ToFixed()函数 今天在做Birt ...
- Qt入门之基础篇 ( 二 ) :Qt项目建立、编译、运行和发布过程解析
转载请注明出处:CN_Simo. 题解: 本篇内容主讲Qt应用从创建到发布的整个过程,旨在帮助读者能够快速走进Qt的世界. 本来计划是讲解Qt源码静态编译,如此的话读者可能并不能清楚地知道为何要静态编 ...
随机推荐
- AngularJS ng-model 指令
AngularJS ng-model 指令 ng-model 指令用于绑定应用程序数据到 HTML 控制器(input, select, textarea)的值. 代码示例如下: <!DOCTY ...
- 登录成功后如何利用cookie保持登录状态
Cookie是一种服务器发送给浏览器的一组数据,用于浏览器跟踪用户,并访问服务器时保持登录状态等功能. 通常用户登录的时候,服务器根据用户名和密码在服务器数据库中校验该用户是否正确,校验正确后则可以根 ...
- 【SpringBoot】 理解Spirng中的IOC原理
前言 前文已经介绍了Spring Bean的生命周期,在这个周期内有一个重要的概念就是: IOC容器 大家也知道IOC是Sping 的重要核心之一,那么如何理解它呢,它又是产生什么作用呢?本文就IOC ...
- 测开之路四十三:ajax请求
ajax固定套路 function http(url, data, method, success, fail) { data = method == 'GET' ? data : JSON.stri ...
- 箫声远(本人)的小站(为展示作品、简历,基于github pages)
箫声远的个人前端小站在线地址
- jQuery基础教程之is()方法和has() 方法
is()方法 —— 用于筛选 语法: jQueryObject.is( expr )返回值: is()函数的返回值为Boolean类型.true或者false.只要其中至少有一个元素符合给定的表达式就 ...
- Tex与PDF
由Knuth Donald开发的tex.web会生成DVI文件,DVI也是Knuth自己实现的(虽然概念是其他人提出的)一种文件格式,目标是与设备无关. 通过dvips程序可以将DVI格式转化成Pos ...
- PAT_A1069#The Black Hole of Numbers
Source: PAT A1069 The Black Hole of Numbers (20 分) Description: For any 4-digit integer except the o ...
- java中的fail-fast(快速失败)机制
java中的fail-fast(快速失败)机制 简介 fail-fast机制,即快速失败机制,是java集合中的一种错误检测机制.当在迭代集合的过程中对该集合的结构改变是,就有可能会发生fail-fa ...
- JavaScript 标准参考教程(alpha) 阮一峰
JavaScript 标准参考教程(alpha)http://javascript.ruanyifeng.com/#introduction