Django小技巧01: redirect

#redirect

翻译整理自: simpleisbetterthancomplex.com

Python

from django.shortcuts import redirect

redirect函数会返回一个HttpResponseRedirect类,比起HttpResponseRedirect类我更喜欢使用更简洁的redirect. 它会使我的代码保持一致。

推荐使用 redirect 的理由是, 您可以指定不同类型的参数(model, url, endpoint),指定 endpoint 的时候还可以直接指定URL, 不用再用django.urlresolvers.reverse来解析一遍了, 简洁了作用域环境.

下面我们来看看实例:

  • 一个模型实例, 这将自动调用模型的get_absolute_url()方法;

Python

from django.shortcuts import redirect
from simple_blog.models import Post

def post_view(request, post_id):
    post = Post.objects.get(pk=post_id)
    return redirect(post)
    # equivalent to: return HttpResponseRedirect(post.get_absolute_url())
  • 反解析endpoint URL 名称(接受视图 endpoint 参数)

Python

from django.shortcuts import redirect
from simple_blog.models import Post

def post_view(request, post_id):
    return redirect('post_details', id=post_id)
    # equivalent to: return HttpResponseRedirect(reverse('post_details', args=(post_id, )))
  • 原始URL (aboluste 或者 relative)

Python

from django.shortcuts import redirect

def relative_url_view(request):
    return redirect('/posts/archive/')
    # equivalent to: return HttpResponseRedirect('/posts/archive/')

def absolute_url_view(request):
    return redirect('https://simpleblog.com/posts/archive/')
    # equivalent to: return HttpResponseRedirect('https://simpleblog.com/posts/archive/')

阅读更多关于redirect的文档. Django Documentation

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏码农分享

解决Chrome插件安装时出现的“程序包无效”问题

错误信息:程序包无效。 详细信息:“Cannot load extension with file or directory name . Filenames...

1.3K2
来自专栏逸鹏说道

使用fiddler模拟http请求

以前看见过,没发,现在又看见了,向大家推荐一下: 概述 与httpwath相比,fiddler能模拟http请求、能断点调试、http分析统计吸引了我,...

4565
来自专栏小筱月

vue 路由 及 跳转传递参数的总结

5751
来自专栏前端技术总结

TypeScript入门教程(一)

本文是TypeScript的入门文章,将分别从下面四点对TypeScript进行介绍:

3K55
来自专栏草根专栏

Git基本命令 -- 历史

历史. 收先需要了解一下git log命令, 使用git的帮助看看: git help log: 执行该命令后, 我的win10弹出来一个html页面, 里面是...

3446
来自专栏云计算教程系列

如何在Ubuntu 14.04上使用OpenLiteSpeed安装WordPress

WordPress是目前世界上最受欢迎的内容管理系统(CMS)。它允许您在数据库后端轻松设置博客和网站,使用PHP执行脚本和处理动态内容。WordPress有一...

840
来自专栏cnblogs

Chrome调试技巧

2183
来自专栏

live555工程建立与调试

Live555是一款开源的RTSP服务器,下载地址http://www.live555.com/liveMedia/public/ 下载下来的代码只有源文件,没...

3555
来自专栏Angular&服务

Angular CLI 常用终端操作命令

初始化创建项目时,自动添加了 <code> @angular/router </code> ,自动添加到package.json 文件中

1554
来自专栏Django中文社区

注册

用户注册就是创建用户对象,将用户的个人信息保存到数据库里。回顾一下 Django 的 MVT 经典开发流程,对用户注册功能来说,首先创建用户模型(M),这一步我...

4835

扫码关注云+社区

领取腾讯云代金券