有很多同学初学django做平台会出现请求问题,比如:
增加一个元素,增加后,刷新页面发现又多了一个元素,不明所以。
所以今天我就用土方法经验来给大家讲讲各种返回方式吧,请仔细看,并保存成书签哦~
第一种
通过url输入或者a标签href的方式请求,并且返回页面。
【例子】:登录页面
【后代代码】:
使用方法:通过url请求,当使用者浏览器地址栏出现:
的时候,就进入了这个页面。
【特点】:返回的是一整个页面,浏览器会直接显示当前页面。
【常用】:页面跳转/打开 等。
【后遗症】:浏览器地址栏会变成这个url,如果刷新会重新进行请求此url,重新加载这个页面。
第二种
通过url输入或者a标签href的方式请求,但返回的是welcome.html并嵌套子页面的情况。
【例子】:首页
【后代代码】:
使用方法:通过url、a标签超链接等请求,当使用者浏览器地址栏出现:
的时候,就进入了这个嵌套页面,这个页面的外壳是菜单,里子是首页。
【特点】:返回的是一整个页面,浏览器会直接显示当前页面,逻辑很复杂,为接口测试平台独创,有利于集中处理页面数据分类。
【常用】:页面跳转/打开 等。
【后遗症】:浏览器地址栏会变成这个url,如果刷新会重新进行请求此url,重新加载这个页面。
第三种
通过url输入或者a标签href的方式请求,但返回重定向到了另一个url。
【例子】:退出登录
【解释】:完成了退出功能后,必须要返回到登录页,所以可以直接重定向到登录页面的Url。
【后代代码】:
使用方法:通过url、a标签超链接等请求,当使用者浏览器地址栏出现:
的时候,就完成了这一系列功能,并且进行重定向到另一个url:
【特点】:请求时的url和最后浏览器地址栏的url不同,可以极大避免重复刷新带来的bug,比如文章开头说的bug,就是因为没有使用这种方式,导致添加元素后,浏览器地址栏没有重定向到正常url而保留了/add/地址,那么刷新页面就会导致重新请求,所以此方式可以避免这种bug,可以把返回结果强行重定向到刚进入列表页的url。
【常用】:页面跳转/打开/保存/刷新等。
第四种
通过各种bom的http协议接口进行请求,请求成功后不触发页面刷新。
【例子】:删除项目
【前端代码】:
【后代代码】:
【特点】:浏览器地址栏不会有任何变化,页面也不会刷新,这样保证了你即便手动刷新页面也不会重复触发这个功能。从network面板可以看到发出了这次接口请求
【常用】:无关页面跳转的数据增删改查等。
【后遗症】:页面因未刷新,会导致一开始带进来的数据展示没有更新,比如这个删除了项目,但项目列表仍然无法看到此项目被删除,所以在js中的接口成功后动作中加上了手动触发刷新页面。这样即保证了页面刷新重新加载最新数据,又保证了浏览器地址栏无变化,简直骚到起飞~
【扩展】:如果想在js中强行更改地址栏,可以用
document.loaction.href='/目标地址/'
这样也可以起到重定向的效果....