Django笔记&教程 2-4 视图常用
Django 自学笔记兼学习教程第2章第4节——视图常用
点击查看教程总目录
1 - shortcut
视图函数需要返回一个HttpResponse对象或者其子类对象。
不过很多时候直接手写建立一个HttpResponse对象比较麻烦。
所以Django实现了建立HttpResponse对象的一些快捷方法:
这些方法收集在django.shortcuts包中。
比如下一章将会频繁使用的render方法,
还有本章第二部分会介绍的redirect方法,
都是django.shortcuts包中的。
django.shortcuts官方文档:shortcuts
django.shortcuts官方介绍如下:
The package django.shortcuts collects helper functions and classes that “span” multiple levels of MVC.
In other words, these functions/classes introduce controlled coupling for convenience’s sake.
2 - reverse 反向解析
知道urlpattern名,可通过reverse函数反向解析出对应的url。
该方法常在模型的get_absolute_url()、get_success_url()中用到,然后用于重定向,一般直接使用本文第三部分的重定向语法覆盖实现这些。
reverse方法位于django.urls中,但也可以从django.shortcuts包中导入。
其使用语法为:
reverse(viewname, urlconf=None, args=None, kwargs=None, current_app=None)
使用示例:
比如有url:
path('login/', views.home, name="login"),
path('user/login/<slug:kind>', views.login, name="login"),
那么在django交互式命令行下,效果如下
>>> reverse("login")
'/user/login/'
>>> reverse("login", kwargs={'kind': 'student'})
'/user/login/student'
3 - 重定向
重定向场景:用户未登录情况下,访问需要登录才能访问的url,往往需要重定向到登录页。
重定向代码一般写在视图函数中:视图函数返回一个重定向对象django.http.HttpResponseRedirect。
不过我们一般使用shortcut里的redirect方法来获得一个重定向对象。
语法如下:
redirect(to, *args, permanent=False, **kwargs)
根据传递的参数返回一个对应的HttpResponseRedirect。
传入的参数可以是:
- 一个模型(
model): 模型的get_absolute_url()方法将被调用。 - 一个视图名,可能带有参数: 将调用
reverse()函数来反向解析名称。 - 绝对或相对URL: 将按原样用于重定向位置。
举例:
比如有url:
path('user/login/<slug:kind>', views.login, name="login"),
那么在django交互式命令行下,效果如下
>>> from django.shortcuts import redirect
>>> redirect("login", kind='student')
<HttpResponseRedirect status_code=302, "text/html; charset=utf-8", url="/user/login/student">
>>> redirect("/user/login/student")
<HttpResponseRedirect status_code=302, "text/html; charset=utf-8", url="/user/login/student">
Django笔记&教程 2-4 视图常用的更多相关文章
- Django笔记&教程 2-3 视图(view)函数介绍
Django 自学笔记兼学习教程第2章第3节--视图(view)函数介绍 点击查看教程总目录 参考文献:https://docs.djangoproject.com/en/2.2/topics/htt ...
- Django笔记&教程 7-1 基于类的视图(Class-based views)介绍
Django 自学笔记兼学习教程第7章第1节--基于类的视图(Class-based views)介绍 点击查看教程总目录 1 介绍 Class-based views (CBVs) are view ...
- Django笔记&教程 总目录
本篇博客只有目录,正文内容在目录章节链接的博客里 除目录本身外,没有链接的章节,说明内容还没开始编辑 本项目笔记仍在不断创作中,还有些内容会根据自身所学不断更新完善 本项目主要为markdwon文档, ...
- Django笔记&教程 3-3 模板常用语法
Django 自学笔记兼学习教程第3章第3节--模板常用语法 点击查看教程总目录 本文主要参考:https://docs.djangoproject.com/en/2.2/ref/templates/ ...
- Django笔记&教程 1-2 二 常用配置
Django 自学笔记兼学习教程第1章第2节--二 常用配置 点击查看教程总目录 新手建议简单浏览本文,不理解的建议跳过,不要强行理解. Django的设置涉及多个模块,需要了解Django的一些相关 ...
- Django笔记&教程 6-2 表单(Form)基础操作
Django 自学笔记兼学习教程第6章第2节--表单(Form)基础操作 点击查看教程总目录 1 - 编写表单类 创建新的表单类的代码,一般写到一个专门的forms.py文件中(一般放在对应的app文 ...
- Django笔记&教程 2-1 URL与View关系
Django 自学笔记兼学习教程第2章第1节--URL与View关系 点击查看教程总目录 参考:how-django-processes-a-request 1- Django处理请求(request ...
- Django笔记&教程 3-1 模板(Template)基础
Django 自学笔记兼学习教程第3章第1节--模板(Template)基础 点击查看教程总目录 1 介绍 模板文件:让Django能够自动生成html代码 作为一个web框架,Django需要需要在 ...
- Django笔记&教程 4-2 模型(models)中的Field(字段)
Django 自学笔记兼学习教程第4章第2节--模型(models)中的Field(字段) 点击查看教程总目录 参考:https://docs.djangoproject.com/en/2.2/ref ...
随机推荐
- UTF-8和Unicode编码
常用的能够保存汉字的编码表有UTF-8.GBK等.需要注意,无论文件使用的是什么编码格式,读取到Java程序中,所有的字符都是用Unicode编码表示(Java中所有的字符内容都使用char类型表示, ...
- EF Core Sequence contains no elements
一.在.Net Core中使用Ef的聚合函数报错: 类似函数: 1,使用FirstOrDefault() 来代替 First() 2.使用SingleOrDefault 来代替 Single 3.使用 ...
- 关于java实体类时间类型的格式化调整问题
关于java bean在后台\转化为json交给前台时间类型格式调整的方法: 首先要引入fastjson依赖. 在实体类上使用注解: @JsonFormat(pattern = "yyyy- ...
- MySQL MHA 运行状态监控
一 项目描述 1.1 背景 MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating master failover 功能.MHA ...
- Serverless 解惑——函数计算如何安装字体
前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数计算准 ...
- typora博客笔记上传图片时不能显示
前言 markdown具有轻量化.易读易写等特性,并且对于图片.超链接.图片.数学公式都有支持. 但是最近在使用Typora的过程中我发现,在写文章笔记的时候导入的图片,因为图片保存在我们电脑本地,当 ...
- 题解 「BZOJ2178」圆的面积并
题目传送门 题目大意 给出 \(n\) 个圆,求它们并的面积大小. \(n\le 10^3\) 思路 如果您不会自适应辛普森法,请戳这里学习 其实我们发现,如果我们设 \(f(x)\) 表示 \(x= ...
- Spirit带你了解如何安全引入第三方资源
Spirit带你了解如何安全的引入第三方资源 本文介绍一下如何安全的引入第三方资源 同源策略(SOP) 首先我们来了解一下什么是同源策略,下面的是wiki百科的定义 同源策略是指Web浏览器中,允许某 ...
- PAT (Basic Level) Practice (中文)1007 素数对猜想 (20分)
1007 素数对猜想 (20分) 让我们定义dn为:dn = pn+1 − pn,其中pi是第i个素数.显然有d1 = 1,且对于n > 1有dn是偶数."素数对猜想"认 ...
- 3.3 Execution Flow of a DDD Based Application 基于DDD的应用程序执行流程
3.3 Execution Flow of a DDD Based Application 基于DDD的应用程序执行流程 The figure below shows a typical reques ...