• django学习——通过HttpResponseRedirect 和 reverse实现重定向(转载)


    用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(原地址)
  • 相关阅读:
    Python使用小功能
    2月5日学习记录
    关于js的词法分析
    JavaScript
    blog界面美化
    css属性
    css三大特性
    css之选择器4
    css之选择器3-系列选择器
    css之选择器2
  • 原文地址:https://www.cnblogs.com/wuheng-123/p/9528141.html
Copyright © 2020-2023  润新知