视图里一般是函数和类,需要返回响应。

试图分为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装饰器用于将函数装饰器转换为方法装饰器

  1. from django.views import View
  2. from django.utils.decorators import method_decorator
  3.  
  4. class AddClass(View):
  5.  
  6. @method_decorator(wrapper)
  7. def get(self, request):
  8. return render(request, "add_class.html")
  9.  
  10. def post(self, request):
  11. class_name = request.POST.get("class_name")
  12. models.Classes.objects.create(name=class_name)
  13. return redirect("/class_list/")

3 上传文件

3. 上传文件的注意事项:

1. 如果有上传文件,views.py中应该从request.FILES中取上传的文件对象

2. 如果有上传文件,html文件中的form表单一定要加 enctype="multipart/form-data"

  1. 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方法来实现

  1. Django封装的一个专门用来返回JSON格式数据的方法
  2.  
  3. from django.http import JsonResponse
  4.  
  5. JsonResponse(字典)
    JsonResponse(列表,safe=False)
  6.  

6 接受的一个变量包含多个值的时候,比如select多选框,就用request.POST.getlist("hobby")

7 模板语言:

 模板语言


  1. 1. 目前已经学到的模板语言内容
    1. {{变量}}
    2. {% 逻辑操作 %}
    1. for循环
    {% for i in list %}
    {{ i }}
    {% endfor %}
  2. forloop.counter
    forloop.counter0
  3. forloop.last
  4. {% empty %}
  5. 2. if判断
    {% if 条件 %}
    条件成立要做的事儿
    {% else %}
    条件不成立要做的事儿
    {% endif %}
    3. 逻辑判断
    1. in 判断
    2. == 判断

8  模板语言的相关一些变量:

  1. 1. 模板语言变量相关
    1. 字典的key对应的值
    {{ dic.key}}
    2. 列表按索引取值
    {{ list.1 }}
    3. 对象的属性和方法
    {{ obj.name }}
    {{ obj.dream }} --> 方法不要加括号

9

  1. 2. Filters (对变量做一些额外的操作)
    1. 内置的filter
    2. 自定义的filter
  2.  
  3. 1. app下面新建一个Python package,包名必须叫 templatetags
    2. 在上面的包中新建一个python文件,里面定义函数,并且注册到django的模板语言
    from django import template
    # 生成一个用于注册自定义filter方法的实例
    register = template.Library()
  4.  
  5. @register.filter(name="sb")
    def add_sb(value):
    return "{} sb".format(value)
    3. 使用自定义的filter方法
    {% load py文件名 %}
    {{ value|sb }}
    3. tags
  6.  
  7. 4. 母版与继承
    1. 定义母版 --> 其他很多页面会用到的共用部分 我们可以提取出来放在单独的一个html文件中
    2. 在母版中 通过定义不同的 block 等待子页面来替换对应的内容
    3. 在子页面中 通过 {% extends 'base.html '%}来继承已经定义好的母版
    4. 在子页面中通过 block 来实现自定义页面内容
    5. 通常会在母版中定义 子页面专用的 page-css page-js 两个块

django 视图view的更多相关文章

  1. Django视图View

    1.什么是Django的视图函数 一个视图函数(或者一个类),简称视图 是python的一个简单的函数,他是接受web请求 并且 处理逻辑 进而返回 响应 响应可以是一张网页的HTML内容,一个重定向 ...

  2. Django学习笔记之Django视图View

    一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. ...

  3. 9.11 Django视图 view和路由

    2018-9-11 16:34:16 2018-9-11 19:00:24 越努力,.越幸运! Django框架参考: https://www.cnblogs.com/liwenzhou/p/8296 ...

  4. [diango]理解django视图工作原理

    前言:正确理解django视图view,模型model,模板的概念及其之间的关联关系,才能快速学习并上手使用django制作网页 本文主要讲解自己在学习django后对视图view的理解 在进入正文之 ...

  5. Django的View(视图)和路由系统

    一.Django的View(视图) 1.介绍 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一 ...

  6. Django的View(视图)

    Django的View(视图) 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误, ...

  7. python3开发进阶-Django视图(View)的常见用法

    阅读目录 简述Django的View(视图) CBV和FBV Request对象和Response对象 Django组件(render,redirect)详解 一.简述Django的View(视图) ...

  8. Django 框架篇(四) : 视图(view)详解 以及 路由系统(url)

    |--Django的View(视图) |-- CBV和FBV: |-- 给视图增加装饰器: |-- request对象: |-- response对象: |-- Django的路由系统(url): | ...

  9. Django 2.0 学习(03):Django视图和URL(下)

    接上篇博文,继续分析Django基本流程. 编写第一个(view)视图函数 1.打开文件polls/views.py,输入下面的Python代码: from django.http import Ht ...

随机推荐

  1. php环境引起的"syntax error unexpected $end"

    今天在网上淘了一段php和javascript的二级联动下拉菜单的代码.本地运行的时候,一直提示错误 syntax error unexpected $end 本来还以为是括号或者标签没有用好,但是仔 ...

  2. iOS 添加Empty Application模板

    在Apple最新的XCode6.x中没有了Empty Application模板,好在XCode可以添加模板,而且可以自定义模板. 首先可以到XCode5.x中复制 Empty Application ...

  3. PCL — Point Pair Feature 中层次点云处理

    博客转载自:http://www.cnblogs.com/ironstark/p/5971976.html 机器人视觉中有一项重要人物就是从场景中提取物体的位置,姿态.图像处理算法借助Deep Lea ...

  4. SDUT 3364 数据结构实验之图论八:欧拉回路

    数据结构实验之图论八:欧拉回路 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 在哥尼斯堡的 ...

  5. Sql Server 2008 Management studio安装教程

    Sql Server 2008 Management studio安装教程     以下介绍Visual Studio 2010已安装后,sql server 2008 management stud ...

  6. kaggle Titanic

    # coding: utf-8 # In[19]: # 0.78468 # In[20]: import numpy as np import pandas as pd import warnings ...

  7. java全栈day09----继承 抽象类

    01继承的概述 在Java中,类的继承是指在一个现有类的基础上去构建一个新的类, 构建出来的新类被称作子类,现有类被称作父类在java中 继承如何来实用呢?举个例子 继承的定义格式和使用 *A:继承的 ...

  8. WPARAM和LPARAM的含义

    lParam 和 wParam 是宏定义,一般在消息函数中带这两个类型的参数,通常用来存储窗口消息的参数. LRESULT CALLBACK WindowProc(HWND hwnd, UINT uM ...

  9. console的使用

    一.显示信息的命令 console.log("normal"); // 用于输出普通信息 console.info("information"); // 用于输 ...

  10. 线段树【洛谷P2894】 [USACO08FEB]酒店Hotel

    P2894 [USACO08FEB]酒店Hotel 参考样例,第一行输入n,m ,n代表有n个房间,编号为1---n,开始都为空房,m表示以下有m行操作,以下 每行先输入一个数 i ,表示一种操作: ...