django 视图view
视图里一般是函数和类,需要返回响应。
试图分为2种:2. CBV(class base view) FBV(function base view)
from django.views import View
class Addclass(View):
def get(self,request):
pass
def post(self,request):
pass
url中,也需要改变
url(r'^add_class/$', views.AddClass.as_view()),
2 fbv本身就是一个函数
可以直接用函数装饰器
但是函数装饰器不可以直接用在类的方法上,但Django中提供了menthod_decorator装饰器用于将函数装饰器转换为方法装饰器
from django.views import View
from django.utils.decorators import method_decorator class AddClass(View): @method_decorator(wrapper)
def get(self, request):
return render(request, "add_class.html") def post(self, request):
class_name = request.POST.get("class_name")
models.Classes.objects.create(name=class_name)
return redirect("/class_list/")
3 上传文件
3. 上传文件的注意事项:
1. 如果有上传文件,views.py中应该从request.FILES中取上传的文件对象
2. 如果有上传文件,html文件中的form表单一定要加 enctype="multipart/form-data"
file_obj = request.FILES.get("touxiang") # 拿到上传文件对象
file_name = file_obj.name # 拿到文件名
with open(file_name, "wb") as f: # 在本地新建一个同名文件
for line in file_obj.chunks(): # 从上传的文件对象中一点一点读取数据
f.write(line) # 写到新建的文件中
4 request是一个对象,是一个页面被请求时Django就会创建一个包含本次请求原信息的httprequest对象,django会将这个对象自动传递给试图函数,一般默认为用request参数承接这个对象
request常用对象的方法:
1 path_info 返回用户访问url ,不包括域名,也不包括参数
2.method 请求中使用http的方法,全大写字符串表示
3 GET 包含所有http GET 参数的类字典对象
4 POST 包含所有http POST参数的类字典对象
5 body 请求体,byte类型 request.POST的数据就是从body里面提取到的
5 httprespones 响应必须是字符串,其他数据类型要其他的django方法来实现
Django封装的一个专门用来返回JSON格式数据的方法 from django.http import JsonResponse JsonResponse(字典)
JsonResponse(列表,safe=False)
6 接受的一个变量包含多个值的时候,比如select多选框,就用request.POST.getlist("hobby")
7 模板语言:
模板语言
1. 目前已经学到的模板语言内容
1. {{变量}}
2. {% 逻辑操作 %}
1. for循环
{% for i in list %}
{{ i }}
{% endfor %} forloop.counter
forloop.counter0 forloop.last {% empty %} 2. if判断
{% if 条件 %}
条件成立要做的事儿
{% else %}
条件不成立要做的事儿
{% endif %}
3. 逻辑判断
1. in 判断
2. == 判断
8 模板语言的相关一些变量:
1. 模板语言变量相关
1. 字典的key对应的值
{{ dic.key}}
2. 列表按索引取值
{{ list.1 }}
3. 对象的属性和方法
{{ obj.name }}
{{ obj.dream }} --> 方法不要加括号
9
2. Filters (对变量做一些额外的操作)
1. 内置的filter
2. 自定义的filter 1. 在app下面新建一个Python package,包名必须叫 templatetags
2. 在上面的包中新建一个python文件,里面定义函数,并且注册到django的模板语言
from django import template
# 生成一个用于注册自定义filter方法的实例
register = template.Library() @register.filter(name="sb")
def add_sb(value):
return "{} sb".format(value)
3. 使用自定义的filter方法
{% load py文件名 %}
{{ value|sb }}
3. tags 4. 母版与继承
1. 定义母版 --> 其他很多页面会用到的共用部分 我们可以提取出来放在单独的一个html文件中
2. 在母版中 通过定义不同的 block 等待子页面来替换对应的内容
3. 在子页面中 通过 {% extends 'base.html '%}来继承已经定义好的母版
4. 在子页面中通过 block 来实现自定义页面内容
5. 通常会在母版中定义 子页面专用的 page-css 和 page-js 两个块
django 视图view的更多相关文章
- Django视图View
1.什么是Django的视图函数 一个视图函数(或者一个类),简称视图 是python的一个简单的函数,他是接受web请求 并且 处理逻辑 进而返回 响应 响应可以是一张网页的HTML内容,一个重定向 ...
- Django学习笔记之Django视图View
一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. ...
- 9.11 Django视图 view和路由
2018-9-11 16:34:16 2018-9-11 19:00:24 越努力,.越幸运! Django框架参考: https://www.cnblogs.com/liwenzhou/p/8296 ...
- [diango]理解django视图工作原理
前言:正确理解django视图view,模型model,模板的概念及其之间的关联关系,才能快速学习并上手使用django制作网页 本文主要讲解自己在学习django后对视图view的理解 在进入正文之 ...
- Django的View(视图)和路由系统
一.Django的View(视图) 1.介绍 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一 ...
- Django的View(视图)
Django的View(视图) 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误, ...
- python3开发进阶-Django视图(View)的常见用法
阅读目录 简述Django的View(视图) CBV和FBV Request对象和Response对象 Django组件(render,redirect)详解 一.简述Django的View(视图) ...
- Django 框架篇(四) : 视图(view)详解 以及 路由系统(url)
|--Django的View(视图) |-- CBV和FBV: |-- 给视图增加装饰器: |-- request对象: |-- response对象: |-- Django的路由系统(url): | ...
- Django 2.0 学习(03):Django视图和URL(下)
接上篇博文,继续分析Django基本流程. 编写第一个(view)视图函数 1.打开文件polls/views.py,输入下面的Python代码: from django.http import Ht ...
随机推荐
- Windows版本Apache+php的Xhprof应用__[2]
[计划] “Windows版本Apache+php的Xhprof应用__[1]”中已经解决了下载,配置的问题,所以这里的工作是接着进行的,我们以调试一个 php代码的文件来看看是怎么用xhprof的. ...
- SQl Server 与数据库的第一次相遇
数据库就是 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,简单说就是存储在硬盘上的文件. 市面上常见数据库有<关系数据库系统>: ORACLE(甲骨文).DB2.S ...
- Tensorflow fetch和feed
import tensorflow as tf #Fetch input1 = tf.constant(1.0)input2 = tf.constant(3.0)input3 = tf.constan ...
- 机器学习初探(手写数字识别)matlab读取数据集
手写数字识别是机器学习里面的一个经典问题,今天就这一段时间学习的机器学习,花一个下午茶的时间,试试机器学习. 首先数据库是在MNIST(http://yann.lecun.com/exdb/mnist ...
- ubuntu nvidia驱动+cuda9.0
https://blog.csdn.net/fdqw_sph/article/details/78745375
- 【IMOOC学习笔记】多种多样的App主界面Tab实现方法(四)
ViewPagerIndicator+ViewPager 要想使用ViewPagerIndicator,要使用到viewPagerlibrary开源库 top.xml <?xml version ...
- [译]Javascript在ASP NET中的运用
本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...
- SQL Server 2014 清理日志
USE [master] GO ALTER DATABASE [TempTestDb02] SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE [Te ...
- MVC要点
1.绑定一个DropDownList @Html.DropDownListFor(m => m.MobileType, new List<SelectListItem>() { ne ...
- unity3d c# http 请求json数据解析
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Net ...