目标,可以通过页面,添加学生

分析:

需要有一个链接

链接点击后,是一个表单出来

可以在表单中添加内从

可以提交表单

表单提交后数据插入到数据库中

希望看到最新的结果(页面跳转到学生列表页)

新页面的完整的几个需求

url名称,已想好,就叫add_stu

模板页面,主要提供表单页面,可以提交

由路对应关系,让路径与视图函数对应起来

视图函数,add_stu 处理主要的业务

在学生列表页的顶部添加链接

路由对应关系

视图函数

推导出视函图函数需要处理的事情,需要的一些数据

    """ 添加学生的功能 """# 根据下面的sql语句,我们发现,需要有name,需要有gender# 因此,期望浏览器在请求的时候可以带给我们# 最终,我是要写一个sql语句,来插入数据# 如何写sql语句sql = "insert into student(name, gender) values ({name}, {gender})"sql.format(name="张三", gender="保密")# sql = "insert into student(name, 字段1,字段2) values ('张三', 字段1值,字段2值)"# 下一行的写法可能存在的问题,如果name是一个not null 的字段,但是我们插入数据时不传值,除非1,not null 的数据有在认值, 2 not null 的数据自增长# sql = "insert into student(字段1,字段2) values (字段1值,字段2值)"# sql = "insert into student values (0号字段值,1号字段值,最后一个字段值)"

前端页面的设计

主要为视图提供数据的传输

代码

<!DOCTYPE html>
<!--作者:pyhui-->
<html lang="zh-CN">
<head><meta charset="UTF-8"><title>添加学生</title>
</head>
<body><!--目标,在请求服务器的时候,带参数过去,告诉服务器,name,gender--><form action="">姓名: <input type="text" name="name" value=""> <br>性别:<select name="gender" id=""><option value="男">男</option><option value="女">女</option><option value="中性">中性</option><option value="保密">保密</option></select><br><input type="submit" value="注册提交"></form></body>
</html>

测试视图一,参数的获取

结果

当前的请求方式 GET
GET请求的参数 <QueryDict: {‘name’: [‘666’], ‘gender’: [‘保密’]}>
POST请求的参数 <QueryDict: {}>

当前的视图函数接收参数的情况描述

情况一

当从学生列表页,点击链接进入添加学生页时

发起的是一个get请求

但是

不带参数

情况二

当从添加学生页的表单中,提交表单

发起的也是一个get请求

但是,get请求会带上参数

请求是get,提交表单也是get,渲染与跳转的区分

代码


def add_stu(request):""" 添加学生的功能 """# 获取GET方式的参数:# 从列表页进入到添加学生页,一定是一个GET请求print("当前的请求方式", request.method)print('GET请求的参数', request.GET)print('POST请求的参数', request.POST)print('get数据的长度', len(request.GET))print("数据的存储,下一步,要跳转页面了")if len(request.GET):return redirect("/stu_list/")else:return render(request, "add_stu.html")

主要根据get参数的长度来判定

数据库的操作封装为模块

""" 数据库模块 """import pymysqlclass DbSchool:def __init__(self):self.conn = self.get_conn()  # 连接对象self.cursor = self.get_cursor()  # 游标对象def get_conn(self):""" 获取连接对象 """conn = pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="root",db="python2019",charset="utf8")return conndef get_cursor(self):"""获取游标对象"""# cursor = Nonecursor = self.conn.cursor(cursor=pymysql.cursors.DictCursor)return cursordef select_all(self, sql):"""查询全部:param sql: 查询语句:return: [{},{}]"""self.cursor.execute(sql)return self.cursor.fetchall()def select_one(self, sql):"""查询一个:param sql: 查询语句:return: {}"""self.cursor.execute(sql)return self.cursor.fetchone()def commit_data(self, sql):"""提交数据:param sql::return:"""self.cursor.execute(sql)self.conn.commit()def __del__(self):self.cursor.close()self.conn.close()db = DbSchool()

继续视图的逻辑,插入数据


def add_stu(request):""" 添加学生的功能 """if len(request.GET):# 获取name参数值name = request.GET.get("name")gender = request.GET.get("gender")# 当表单提交数据时sql = "insert into student(name,gender) values('{}','{}')".format(name, gender)print('当前执行的sql语句是\n',sql)db.commit_data(sql)print('恭喜,插入数据成功')return redirect("/stu_list/")else:# 当进入添加学生页面时return render(request, "add_stu.html")

django-添加学生的制作-模块的封装相关推荐

  1. 在python中模块可以封装_python 制作python包,封装成可用模块教程

    首先编写py程序: printtest.py def test(): print('print test') 将以上.py文件做成python模块,需要在相同目录下创建setup.py文件,setup ...

  2. PHP+Mysql制作一个学生成绩查询模块

    PHP+Mysql制作一个学生成绩查询模块 我不是学PHP的我只是需要用一下PHP要是学又得好长时间,最好的方法就是问,但是问会的,又说让百度,得,我直接自己干吧,便花费了我一整天时间做了一下,从网上 ...

  3. django后台添加学生-jquery实现表单正则表达式验证,判断是否可以进行提交

    话不多说,先放图 左边的导航就不放代码了,需要再问 (1)视图模板 (2)路由(urls.p) (3)views.py # GET:向服务器 获取 数据 # POST:向服务器 提交 数据 # 添加学 ...

  4. Python模块和包:导入制作模块、name、模块定位顺序(文件名与模块名重复、功能名与功能名重复、函数名与功能名重复、变量名与模块名重复)、from 模块名 import *__all__列表、包

    一.模块 Python 模块(Module),是⼀个 Python ⽂件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块能定义函数,类和变量,模块⾥也能包含可执⾏的代码. ...

  5. c语言学生成绩单,c语言-学生成绩单制作

    <c语言-学生成绩单制作>由会员分享,可在线阅读,更多相关<c语言-学生成绩单制作(16页珍藏版)>请在人人文库网上搜索. 1.可编辑C语言课程设计报告项 目 名 称: 学生成 ...

  6. [Python+Django]Web学生信息管理系统数据库设计及系统实现

    本文我们完成数据的设计,并通过Django框架完成数据库构建同时利用Django框架模式实现学生信息管理系统的功能. 简单的包装下毕设应该没问题了. Python,Mysql,Pycharm的安装本文 ...

  7. ( 持续更新,目前含 200+ 工具类 ) DevUtils 是一个 Android 工具库, 主要根据不同功能模块,封装快捷使用的工具类及 API 方法调用。

    DevUtils GitHub About ( 持续更新,目前含 200+ 工具类 ) Roadmap DevUtils 是一个 Android 工具库,主要根据不同功能模块,封装快捷使用的工具类及 ...

  8. 在Hexo中为文章自动添加版权信息声明模块

      版权声明: 本文由秦元培创作和发表,采用署名(BY)-非商业性使用(NC)-相同方式共享(SA)国际许可协议进行许可,转载请注明作者及出处,本文作者为秦元培,本文标题为在Hexo中为文章自动添加版 ...

  9. 阅读micropyton源码-添加C扩展类模块(2)

    阅读micropyton源码-添加C扩展类模块(2) 苏勇,2021年8月 文章目录 阅读micropyton源码-添加C扩展类模块(2) 看看machine_pin_type实例的定义 特别说明 看 ...

最新文章

  1. 清华校长俯身拨穗!曾收病危通知书的博士毕业,刷屏的却是这个人
  2. 如果算力足够根本不需要标注太多数据
  3. SQLite | Where 子句
  4. PyQt5学习笔记(一)PyQt5入门QLabel控件及使用
  5. Windows Server 2016多用户同时登录远程桌面
  6. 修改Chrome浏览器默认背景颜色为浅绿色(转)
  7. 通过电脑从Ovi商店下载软件并安装
  8. C# IMEI15位转换成8位密码
  9. EXCEL抓取SQL查询数据
  10. 重装系统后计算机无法启动,电脑小白一键重装系统后无法开机
  11. 基于零日漏洞的自动驾驶预期功能安全风险评估方法
  12. outlook配置阿里企业邮箱
  13. 往word表中写数据
  14. 日中中日翻译必携 实战 5册套装 日文原版_推荐
  15. class类,静态属性 以及 静态方法
  16. 微信JSAPI支付 - 服务商模式下子商户 统一下单的注意事项
  17. 【尚硅谷】新web项目-QQZone代码及详细解析
  18. eNSP下园区网综合实验分步配置(前言)
  19. 导电滑环的用途有哪些呢
  20. 多图片查看神器MulimgViewer

热门文章

  1. PS命令总结-实战经验
  2. keyCode键码值对照表
  3. 嵌入式实时操作系统ucos-ii_「正点原子NANO STM32开发板资料连载」第三十六章 UCOSII 实验 1任务调度...
  4. yarn临时目录 没有jar包_复习之yarn
  5. 学法减分助手PRO小程序
  6. 有点火的程序秒收录牛X
  7. Spring Cloud微服务之Mybatis-Plus代码生成器整合(四)
  8. 一分钟解决“仅限中国大陆地区播放”
  9. 使用Google OAuth 2.0存取Google API (Google Client ID)
  10. Linux 技巧: 从命令行创建像素标尺