您的位置:首页 > 理论基础 > 计算机网络

django学习——通过HttpResponseRedirect 和 reverse实现重定向

2018-01-10 11:29 1001 查看
用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/")


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

url.py

from django.conf.urls import url
from myapp import views

urlpatterns = [
url(r'^index/$', views.myview, name='index'),
]


myapp/views.py

from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse

def myview(request):
...
return HttpResponseRedirect(reverse('index'))


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

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


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

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


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

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}))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐