人分类: django
 

用django开发web应用, 经常会遇到从一个旧的url转向一个新的url,也就是重定向。

HttpResponseRedirect:构造函数的第一个参数是必要的 — 用来重定向的地址。这些能够是完全特定的URL地址(比如,’http://www.yahoo.com/search/‘),或者是一个不包含域名的绝对路径地址(例如, ‘/search/’)。

from django.http import HttpResponseRedirect
from django.views import View class LoginView(View):
def post(self, request):
...
return HttpResponseRedirect("/index/")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

还可以通过reverse()对url的name进行解析:

url.py

from django.conf.urls import url
from myapp import views urlpatterns = [
url(r'^index/$', views.myview, name='index'),
]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

myapp/views.py

from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse def myview(request):
...
return HttpResponseRedirect(reverse('index'))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

而如果url中包含参数,如下类型的url:

url(r'^blog/(?P<blog_id>\d+)/$', BlogDetailView.as_view(), name='blog_id')
  • 1

如果我们还采用上述方式实现重定向,则会提示缺少一个参数:blog_id。此时需要在reverse()中添加参数:

blog_id = blog.id   #获取到博客的id号
return HttpResponseRedirect(reverse('index', args=(blog_id)))
  • 1
  • 2

如果包含多个字段,可以采用如下形式:

url(r'^blog/(?P<blog_id>\d+)/(?P<user_id>\d+)、$', BlogDetailView.as_view(), name='blog_id')

return HttpResponseRedirect(reverse('index', kwargs={'blog_id': blog_id, 'user_id': user_id}))

https://blog.csdn.net/geerniya/article/details/79021784(原地址)

django学习——通过HttpResponseRedirect 和 reverse实现重定向(转载)的更多相关文章

  1. Django学习笔记(3)——表单,测试和模板语法的学习

    一,表单form 为了接收用户的投票选择,我们需要在前段页面显示一个投票界面,让我们重写之前的polls/detail.html文件,代码如下: <h1>{{ question.quest ...

  2. Django学习笔记第三篇--关于响应返回

    一.返回简单类型: #1.返回简单字符串 #from django.http import HttpResponse return HttpResponse("return string&q ...

  3. Django学习笔记之Django的url反向解析

    0x00 URL反向解析和三种不同的反向解析方式 Django中提供了关于URL的映射的解决方案,可以做两个方向的使用: 1.普通解析过程:由客户端的浏览器发起一个url请求,Django根据URL解 ...

  4. Django学习笔记(13)——Django的用户认证(Auth)组件,视图层和QuerySet API

    用户认证组件的学习 用户认证是通过取表单数据根数据库对应表存储的值做比对,比对成功就返回一个页面,不成功就重定向到登录页面.我们自己写的话当然也是可以的,只不过多写了几个视图,冗余代码多,当然我们也可 ...

  5. Python框架之Django学习笔记(十七)

    Django框架之表单(续二) 今天的这篇博客将是Django学习笔记博客的最后一篇,基本每周最少一篇的Django框架学习,坚持到今天也实属不易,当然了,这个框架的学习仅仅是Django框架的基础部 ...

  6. Django学习:url路由系统

    一.MTV模型 1.Django的MTV分别代表: Model(模型):和数据库相关的,负责业务对象与数据库的对象(ORM) Template(模板):放所有的html文件 模板语法:目的是将白变量( ...

  7. Django学习笔记(16)——扩展Django自带User模型,实现用户注册与登录

    一,项目题目:扩展Django自带User模型,实现用户注册与登录 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册,登录,用户认证,注销,修改密码等功能. ...

  8. Django学习(2.2.1版本)

    项目技术重难点分析: 模型层:模型是您的数据唯一而且准确的信息来源.它包含您正在储存的数据的重要字段和行为.一般来说,每一个模型都映射一个数据库表. 每各模型都是一个python的类,这些类继承  d ...

  9. django学习(二)

    1.反向解析 什么是方向解析呢? 通过一些方法得到一个结果,该结果可以直接访问对应url出发视图函数. 先给一个路由和视图函数起一个别名.但是我们要注意的是反向解析的别名是不可以冲突的!!!不然会出现 ...

随机推荐

  1. ajax 请求成功,但是后台feigin请求超时解决方案

    ========后台请求数据时间较长,报feigin超时错误====== fegin报错如下: feign.RetryableException: Read timed out executing P ...

  2. python主流框架简介和Django框架的使用

    目录 一.手撸简易web框架 二.动静态网页 1. 静态网页 2. 动态网页 三.jinja2模板语法 1. jinja2的作用 四.python主流web框架 1. django 3. tornad ...

  3. pyqt5-动画组QAnimationGroup

    from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QLabel import sys from PyQt5.QtCore im ...

  4. 算法——得到数据流中前K大的数

    用优先队列 public PriorityQueue<Integer> kthLargest(int k, int[]a) { PriorityQueue<Integer> q ...

  5. electron-vue 图片加载失败后使用默认头像

    <img :src="item.headUrl" alt="" class="contact-head" :onerror=" ...

  6. JPA学习(六、JPA_JPQL)

    框架学习之JPA(六) JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中 ...

  7. BZOJ 4245: [ONTAK2015]OR-XOR 贪心 + 位运算

    Description 给定一个长度为n的序列a[1],a[2],...,a[n],请将它划分为m段连续的区间,设第i段的费用c[i]为该段内所有数字的异或和,则总费用为c[1] or c[2] or ...

  8. HDU 1097 快速幂

    #include<iostream> using namespace std; long long quick(long long a,long long b,int c) { ; a=a ...

  9. sh_08_打印分隔线

    sh_08_打印分隔线 def print_line(char, times): print(char * times) print_line("hi ", 40)

  10. mac 下 git log 退出方法

    英文状态下按 Q (大小写无论)即可.