对Django 转发和重定向的实例详解


Posted in Python onAugust 06, 2019

转发和重定向:

转发:一次请求和响应,请求的地址没有发生变化,如果此时刷新页面,就会出现重做现象。

重定向:一次以上的请求和响应,请求地址发生一次以上的变化,如果此时刷新页面,就不会发生重做现象。

我来举个简单的列子,比如我手机号上不了4G网,我打电话给10086,说了我这个情况后,她会把这个情况反映给技术人员,来帮我解决这个问题,如果说我又有这个问题的话直接点击重播就好了,但我重播的是10086这个号码,然后再有她转给技术人员,如果再有问题还得继续这样,那么就显得很麻烦了,那这时候10086的工作人员可以在我拨打10086的时候直接转到技术人员哪里,虽然外面的拨的电话是10086,但接的却是技术人员的号码。虽然这个例子很垃圾,但差不多就是这个意思。

这个问题可以在原来的项目上改一下就可以了,因为我前面的项目早已经介绍过了,所以就不说了,就在原来的文件上进行更改

如果不做重定向的话,我们在提交用户名和密码的时候,这时候点刷新时,用户名和密码会一直提交,如果数据库没有做限制的话,那么就会出现多个相同的用户名和密码。

要解决这个问题,首先我们要做一个命名空间,将我们注册的每个用户名用id来进行绑定,确保唯一性,而且注册成功后直接跳转到show.html那里去,而且还可以把用户名和密码显示出来

1. 首先我们要在Djangoproject这个容器的url.s.py文件里面加入命名空间

对Django 转发和重定向的实例详解

我这里写入命名空间,自定义命名空间名为zc,这个在view.py里面会写到

2. 根据我之前写的博客,容器的urls.py会查找项目的urls.py,这里也要做一些修改

对Django 转发和重定向的实例详解

这里我们在3行中写app_name='zc',这句也是命名空间,这是为了对应view.py中redirect函数里面reverse的zc:show,第6行中加了<int:id>,这个的意思是将数据库的id使用进来了,这样我们就可以用show/id,可以显示数据的id,也可更改id来查找数据,这个和view.py里面的args=[zc.id]有关,后面那个name='show' 的意思是取个别名,对应的也是view.py里面的zc:show,表名这个命名空间里面放的是show函数。

3.下面来看view.py文件

对Django 转发和重定向的实例详解

这里我们我多导入两个函数,分别是redirect(重定向问题)、reverse(解决跳转路径)。

4. views.py这里我们多定义了一个show函数,这里加了函数要在temp1项目下的urls.py下也要加,告诉urls.py有这个函数

里面的参数是id,这个参数要从外界获取,这个参数就是<int:id>,是在urls.py那里获取到的,在return中我们把我们在15行中得到的用户名和密码返回出去,15行get(pk=id)的意思是获取到主键的id,这个id里面有用户名和密码,这个id号是数据库表在创建前自动创建的,之前的文章我提到过,这里就不多说。

5. 返回的内容会赋值给show.html,我们会用两个参数来接收

对Django 转发和重定向的实例详解

6. 我们来运行项目并注册

对Django 转发和重定向的实例详解

7. 然后会跳转到show页面

对Django 转发和重定向的实例详解

这里会把用户名和密码显示出来,而链接里面的18则是id,这里表名我们注册的用户名在数据库里面的id号是18,我们也可以更改这个id号,改为17的话则会显示出id号为17的用户名和密码。

以上这篇对Django 转发和重定向的实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python ValueError: invalid literal for int() with base 10 实用解决方法
Jun 21 Python
Python字符串拼接、截取及替换方法总结分析
Apr 13 Python
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
Jan 20 Python
Python使用pyodbc访问数据库操作方法详解
Jul 05 Python
2019 Python最新面试题及答案16道题
Apr 11 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
May 27 Python
在python中用url_for构造URL的方法
Jul 25 Python
使用OpCode绕过Python沙箱的方法详解
Sep 03 Python
python基于gevent实现并发下载器代码实例
Nov 01 Python
利用Python脚本批量生成SQL语句
Mar 04 Python
windows、linux下打包Python3程序详细方法
Mar 17 Python
2021年最新用于图像处理的Python库总结
Jun 15 Python
django 环境变量配置过程详解
Aug 06 #Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
Aug 06 #Python
如何在Django配置文件里配置session链接
Aug 06 #Python
在django中,关于session的通用设置方法
Aug 06 #Python
Django 对象关系映射(ORM)源码详解
Aug 06 #Python
Django中使用session保持用户登陆连接的例子
Aug 06 #Python
Python中的self用法详解
Aug 06 #Python
You might like
星际玩家的三大定律
2020/03/04 星际争霸
BBS(php &amp; mysql)完整版(三)
2006/10/09 PHP
PHP CLI模式下的多进程应用分析
2013/06/03 PHP
PHP实现的简单操作SQLite数据库类与用法示例
2017/06/19 PHP
javascripit实现密码强度检测代码分享
2013/12/12 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
基于BootStrap Metronic开发框架经验小结【六】对话框及提示框的处理和优化
2016/05/12 Javascript
怎么限制input的text里输入的值只能是数字(正则、js)
2016/05/16 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
2016/05/24 Javascript
vue学习笔记之指令v-text &amp;&amp; v-html &amp;&amp; v-bind详解
2017/05/12 Javascript
React入门教程之Hello World以及环境搭建详解
2017/07/11 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
node.js-v6新版安装具体步骤(分享)
2017/09/06 Javascript
简单的Vue SSR的示例代码
2018/01/12 Javascript
vue.js动画中的js钩子函数的实现
2018/07/06 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
2019/06/10 jQuery
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
vue+element树组件 实现树懒加载的过程详解
2019/10/21 Javascript
Python yield使用方法示例
2013/12/04 Python
python 性能提升的几种方法
2016/07/15 Python
python实现逆序输出一个数字的示例讲解
2018/06/25 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
Python给图像添加噪声具体操作
2019/03/03 Python
Django项目中添加ldap登陆认证功能的实现
2019/04/04 Python
python logging日志模块原理及操作解析
2019/10/12 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
GE设备配件:GE Appliance Parts(家电零件、配件和滤水器)
2018/11/28 全球购物
房产公证委托书范本
2014/09/20 职场文书
表彰大会新闻稿
2015/07/17 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers
MySQL中InnoDB存储引擎的锁的基本使用教程
2021/05/26 MySQL
spring注解 @PropertySource配置数据源全流程
2022/03/25 Java/Android
Mysql查询时间区间日期列表,不会由于数据表数据影响
2022/04/19 MySQL