第一步我是用户 现在 浏览器上输入地址 ---》 发送给服务   来请求返回当前的页面

第二步  服务端获得我当前的客户端要求访问的地址  

第三步 服务端去urls.py中去,来看是要访问那个地址   看到是 classlist  它对应的函数名是classlist

第四步  根据地址对应的 函数去执行函数classlist

#函数执行功能,最后的一句话是将 HTML文件返回给客户端 浏览器  ,并将信息 返回给客户端

# 浏览器接受返回过来的信息,按照HTML 规则渲染页面

关于render 语句用于将信息返回给页面并渲染的功能

获取网页内容执行的函数

def  classlist(request):conn=pymysql.connect(host='localhost',database='db1',user='root',password='123456',charset='utf8')#这个是将下边的获取的ret的类型转换成字典类型,#   因为他从数据库中获得的数据是((5, '全栈9期'), (6, '全栈10期'))这种元祖类型的,不利于取值#[{'id': 5, 'cname': '全栈9期'}, {'id': 6, 'cname': '全栈10期'}] 写上这句的话就转换成字典类型#有利于后台去获取值并将数据显示出来cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)sql='select id,cname from class order by id '#把数据库中的表单的数据全部获取出来
    cursor.execute(sql)#将获取的数据放到这个变量中  此时已经是字典形式的了ret=cursor.fetchall()print(ret)#将网页,字典以键值对的形式返回给html文件return render(request,'class_list.html',{'class_list':ret})  #那边写的是class_list 就能够得到它对应的值   ret 这个字典

HTML代码中的对应写法

  {% for class in calss_list %}  #开头    Django 支持这种循环,只要写一个这种代码就可以  以循环的形式将内容添加到网页中去<tr><th scope="row">{{ class.id }}</th><td>{{ class.cname }}</td>   #取值 .cname  是对应的数据库中的字段名{'id': 6, 'cname': '全栈10期'}<td class="text-center"><button type="button" class="btn btn-sm btn-success" aria-label="Left Align"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>编辑</button><button type="button" class="btn btn-sm btn-danger" aria-label="Left Align"><a href="/delete/?id={{ class.id }}">删除</a></button></td></tr>{% endfor %}   #  结尾

添加功能和对应的HTML中的表单写法                     用到了form表单

第一步先点击   添加1  按钮

添加一中绑定这  a标签 跳转标签

      <button type="button" class="btn btn-success pull-right" ><a href="/update/">添加1</a>   #herf="/update/"  当是地址一致,只是末尾不一样的时候就跳  </button>                                             跳到末尾的这个地址

此时  又向服务端发送请求  http://127.0.0.1:8001/update/   它的尾端是  /update/

此时在判断后执行  upate函数

# 添加功能
def update(request):#开始过来的的时候请求的信息是GET 所以不会执行这一个if 条件下的内容,而是去执行下边的内容if request.method=='POST':rename=request.POST.get('name')print(rename)conn = pymysql.connect(host='localhost', user='root', password='123456', database='db1', charset='utf8')cursor = conn.cursor()sql = 'insert into class(cname)VALUES (%s);'ret = cursor.execute(sql,rename )print(ret)conn.commit()cursor.close()conn.close()return redirect('/classlist/')#因为服务端得到的是GET请求,所以他就不执行if语句,# 执行这一句 将网页返回给请求端return render(request,'tianjia.html')

得到页面

将数据写完执行  提交按钮

这时候要看form表单中的对应代码了

<body># action="/update/"  的意思是将数据提交到 /update/这个网页#  method="post"  意思是方法是post  在后边的函数中取#request.method  在后端的时候就能取到  POST  这个方法 执行if与句中的内容
<form action="/update/" method="post">
<span>姓名</span>
<input type="text" name="name">
<input type="submit">
</body>

这是后看这个代码  这时候if 中的条件成立

def update(request):#开始过来的的时候请求的信息是GET 所以不会执行这一个if 条件下的内容,而是去执行下边的内容  注意  点击提交的时候这if 条件成立  执行这个语句 将数据添加到数据库中if request.method=='POST':rename=request.POST.get('name')  #取到添加的数据  即  name 对应的  value 值print(rename)conn = pymysql.connect(host='localhost', user='root', password='123456', database='db1', charset='utf8')cursor = conn.cursor()sql = 'insert into class(cname)VALUES (%s);'ret = cursor.execute(sql,rename )   添加到数据库中去print(ret)conn.commit()cursor.close()conn.close()return redirect('/classlist/')  添加完  提交后 跳转到  /classlist/  对应的网页#因为服务端得到的是GET请求,所以他就不执行if语句 ,# 执行这一句  将网页返回给请求端return render(request,'tianjia.html')

转载于:https://www.cnblogs.com/wangkun122/p/8278045.html

Djangon 基础总结 汇总 从请求到返回页面的过程,相关推荐

  1. 当输入 https://www.baidu.com 时,返回页面的过程中发生了什么?

    浏览器向 DNS 服务器发送 baidu.com 域名解析请求: DNS 服务器返回解析后的 ip 给客户端浏览器,浏览器想该 ip 发送页面请求: DNS 服务器接收到请求后,查询该页面,并将页面发 ...

  2. 从浏览器打开http://www.baidu.com地址回车发送请求到看到页面的过程?

    一.整体过程 1.将域名解析成ip的过程: 2.通过ip找到网站服务器,请求打开具体的网页,服务器响应请求,客户端浏览器收到响应报文后,渲染html文档,最终看到网页页面. 二.原理 1.dns解析的 ...

  3. java基础知识大全,java 基础知识点汇总

    java 基础知识点汇总 问题一:我声明了什么! String s = "Hello world!"; 许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个Strin ...

  4. 网络基础知识汇总学习

    一.网线(双绞线)连接线的制作 双绞线制作有 568A 和 568B 两个标准,日常以 568B 标准较常用. 568B 标准按颜色排序为: 1- 橙白. 2- 橙.3- 绿白.4- 蓝. 5- 蓝白 ...

  5. python基础知识资料-Python基础知识汇总

    原标题:Python基础知识汇总 1.Anaconda的安装 百度Anaconda的官网,下载左边的Python3.X版本 然后是设置路径,最后给出Jupyter notebook.具体参考: 猴子: ...

  6. python基础知识资料-学习Python列表的基础知识汇总

    千里之行,始于足下.要练成一双洞悉一切的眼睛,还是得先把基本功扎扎实实地学好.今天,本喵带大家仔细温习一下Python的列表.温故而知新,不亦说乎. 当然,温习的同时也要发散思考,因为有些看似无关紧要 ...

  7. 前端开发基础知识汇总

    一.HTML 1.前言与常用标签 浏览器 内核 备注 IE Trident IE.猎豹安全.360极速浏览器.百度浏览器 firefox Gecko 可惜这几年已经没落了,打开速度慢.升级频繁.猪一样 ...

  8. java中使用ajax请求数据格式化,ajax请求服务器返回json数据格式化

    JQuery--实现Ajax应用 实现Ajax应用 1   .load()异步请求数据,通过Ajax请求加载服务器中的数据,并把返回的数据放置到指定的元素中,调用格式为load(url,[data], ...

  9. 【若泽大数据001】Linux基础知识汇总

    [若泽大数据001]Linux基础知识汇总 前情提要: Linux平台搭建 [若泽大数据001]Linux基础知识汇总 1.查看当前光标所在的目录的命令是什么? 2.切换到当前用户的家目录,哪三种方式 ...

  10. Python基础知识汇总和应用示例

    Python基础知识汇总和应用示例 文章内容 链接 python库下载网站 python库下载网站 python读取csv文件 python读取csv文件 Python3基础知识:三元表达式.元祖.s ...

最新文章

  1. eclipse java debug 日志输出到文件里面
  2. 干掉 Navicat:这个 IDEA 的兄弟真香!
  3. 《信息学奥赛一本通》回文数(Noip 1999)
  4. 4/7 SELECT语句:过滤(组合WHERE子句)
  5. java mtom_java-axis1.4客户端使用Mtom发送文件
  6. 新年彩蛋:Spring Boot自定义Banner
  7. PHP留言并展示_利用PHP实现简单留言板
  8. 2021年上半年系统集成项目管理工程师综合知识真题及答案解析
  9. 这可能是最详细的Python文件操作
  10. 三年级计算机教案 渔舟唱晚,《渔舟唱晚》大班教案
  11. FTP+SSL(加密的ftp)
  12. [POI2012]STU-Well(二分答案+神仙操作)
  13. Linux 和 Win10 上实现端口映射
  14. 学生信息管理系统详细设计文档
  15. Excel选择下拉匹配
  16. 基本绘图全面攻略——turtle(海龟)库 Python
  17. 一技随身计算机作文,生活技能作文(精选9篇)
  18. java绘制五子棋棋盘
  19. VMware ESX 4.1版本,浏览器无法访问问题【已解决】
  20. Windows优化大师已经成为“流氓大师”

热门文章

  1. 送你一份万字机器学习资料
  2. 数据分析看关晓彤的招黑之路
  3. 数据之路 - Python爬虫 - urllib库
  4. BZOJ3997 TJOI2015组合数学(动态规划)
  5. java nio广播服务器
  6. 【BZOJ3207】花神的嘲讽计划Ⅰ Hash+主席树
  7. 第二百三十二节,Bootstrap排版样式
  8. 补发《超级迷宫》站立会议八
  9. php 调试环境配置
  10. Understanding Growth