django学习——通过HttpResponseRedirect 和 reverse实现重定向(转载)
2024-10-07 08:54:17
人分类: 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(原地址)
最新文章
- 如何数据库表数据导出到excel中
- mysql: unknown variable 'character-set-client=utf8'
- 如何使用THashedStringList
- IOS 其它语言比较-Objc与JAVA的比较
- 【二分答案】【贪心】bzoj3969
- Python语言开发的一些问题
- jquery 实现 点击按钮后倒计时效果,多用于实现发送手机验证码、邮箱验证码
- 安卓四大组件之--service
- std::move()和std::forward()
- 在后台CS文件里面,隐藏和显示Repeater里面控件
- Node.js权威指南 (5) - 使用Buffer类处理二进制数据
- 程序员求职之道(《程序员面试笔试宝典》)之求职有用网站及QQ群一览表
- Activity跳转
- git https 请求报错 504
- 深入理解Java中的同步静态方法和synchronized(class)代码块的类锁
- echo不换行的实现
- 在linux上安装tomcat
- iframe子父页面函数互相调用
- 关于json 转换BigDecimal精度丢失问题
- zabbix系列之六——安装后配置二Items