1 request对象

method:请求方式
GET:get请求的参数(post请求,也可以携带参数)
POST:post请求的参数(本质是从bdoy中取出来,放到里面了)
COOKIES--->后面讲
META:字典(放着好多东西,前端传过来的,一定能从其中拿出来)
body:post提交的数据
path:请求的路径,不带参数
request.get_full_path() 请求路径,带参数
session---后面讲
user---后面讲
FILES
encoding:编码格式

2 HttpResponse对象

-三件套
-JsonResponse:往前端返回json格式数据(没有它,我可以自己写)
-转列表格式:指定safe=False
-中文字符问题:json_dumps_params={'ensure_ascii':False}

3 JsonResponse

# JsonResponse
url(r'^json$', app01_views.JasonRes),
from django.http import JsonResponse
def JasonRes(request):
dic={'id':1,'name':'lll六六六','publish':'laonanhai','publish_date':'2019-01-9','author':'dj'}
# import json
# return HttpResponse(json.dumps(dic,ensure_ascii=False))
return JsonResponse(dic,safe=False,json_dumps_params={'ensure_ascii':False})

4 CBV(基于类的视图)和FBV(基于函数的视图)

-cbv:一个路由写一个类
-先定义一个类:继承自View
from django.views import View
class MyClass(View):
# 当前端发get请求,会响应到这个函数
def get(self, request):
return render(request,'index.html')
# 当前端发post请求,会响应到这个函数
def post(self,request):
print(request.POST.get('name'))
return HttpResponse('cbv--post')
-在路由层:
re_path('^myclass/$',views.MyClass.as_view()),

# CBV
url(r'^myclass/$', app01_views.Myclass.as_view()),
from django.views import View
class Myclass(View):
def get(self,request):
return render(request,'index.html') def post(self,request):
print(request.POST.get('name'),request.POST.get('pwd'))
return HttpResponse('CBV--POST')

5 文件上传

-form表单默认提交的编码方式是enctype="application/x-www-form-urlencoded"
-前端:如果要form表单上传文件,必须指定编码方式为:multipart/form-data
-后端:
file=request.FILES.get('myfile')
with open(file.name,'wb') as f:
for line in file:
f.write(line)

# FILES
url(r'^file', app01_views.file_upload),
def file_upload(request):
if request.method=='GET':
return render(request,'file_upload.html')
else:
print(request.POST)
print(request.FILES)
from django.core.files.uploadedfile import InMemoryUploadedFile
file1=request.FILES.get('myfile1')
print(type(file1))
file2=request.FILES.get('myfile2')
import os,time
name=str(time.strftime("%Y-%m-%d"))+file1.name
print(name)
path=os.path.join('media',name)
print(path)
with open(path,'wb') as f:
for line in file1:
f.write(line)
# with open(file2.name,'wb') as f:
# for line in file2:
# f.write(line)
return HttpResponse('上传成功!')
<body>
<form action="" method="post" enctype="multipart/form-data">
{#<form action="" method="post" enctype="application/x-www-form-urlencoded">#}
<p>用户名 <input type="text" name="name"></p>
<input type="file" name="myfile1">
{# <input type="file" name="myfile2">#}
<input type="submit" name="submit">
</form>
</body>

6 前端提交数据编码格式:

-multipart/form-data(上传文件)
-application/x-www-form-urlencoded(默认编码)

7 图书管理系统表分析:

图书管理系统
-表:
book表
author表
publish表

-一对一:一对多的关系一旦确立,关联字段写在哪都可以

author=models.OneToOneField(to='Author_sim',to_field='id',on_delete=models.CASCADE)

-一对多:一对多的关系一旦确立,关联关系写在多的一方

publisher=models.ForeignKey(to='Publisher',to_field='id',on_delete=models.CASCADE)

-多对多:多对多的关系,必须创建第三张表(中间表)

authors=models.ManyToManyField(to='Author_sim')

TTL:

1 request对象
-GET
-POST
-method
-body
-path:只是路径article/1/44/
-get_full_path():带参数的路径:article/1/44/?id=1&name=12
-META:字典,客户端的ip,客户端请求的所有东西
-FILES:字典,客户端上传的文件字典
-is_ajax():判断是否是ajax请求
2 HttpResponse:只要是响应,一定是它的对象
-render(request,'模板名字',{key:value})
-HttpResponse()
-redirect()
-JsonResponse():封装了json.dumps,json_dumps_params={'ensure_ascii': False}
3 CBV和FBV
class Test(View):
dispatch方法:总的分发方法
get
post
路由:
类名.as_view()
补充:集群和分布式
4 文件上传:
前端:form提交:指定编码格式from-data
后台:file=request.FILES.get('名字')
-打开空文件,用for循环读file,写入空文件

5 图书表设计
-一对一:关联关系,写在谁中都可以
-一对多:关联关系写在多的一方
-多对多:必须创建中间表
-orm
-一对一:OneToOneField(to=表,to_field=字段)
-一对多:ForeignKey(to='Publish', to_field='id',on_delete=models.CASCADE)
-多对多:models.ManyToManyField(to='Author')自动创建第三张表
-DateField()
-DecimalField()
-IntegerField()

TTL2

Python-Django 视图层的更多相关文章

  1. web框架开发-Django视图层

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

  2. Django视图层

    本文目录 1 视图函数 2 HttpRequest对象 3 HttpResponse对象 4 JsonResponse 5 CBV和FBV 6 简单文件上传 回到目录 1 视图函数 一个视图函数,简称 ...

  3. Django 视图层

    URL映射 1.分布式url映射 include()函数提供分布式url映射功能,使URL映射可以被编写在多个url.py文件中 from django.conf.urls import url fr ...

  4. django——视图层

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

  5. django视图层(views)

    1.视图层概念 视图函数,其实就是一个简单的函数,它接收web请求并返回web响应(响应的可以是一个html,一个重定向,一个xml文档等等) 每个视图函数都负责返回一个HttpResponse对象. ...

  6. [Django框架之视图层]

    [Django框架之视图层] 视图层 Django视图层, 视图就是Django项目下的views.py文件,它的内部是一系列的函数或者是类,用来专门处理客户端访问请求后处理请求并且返回相应的数据,相 ...

  7. DjangoMTV模型之视图层views及模板层template

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

  8. python 全栈开发,Day69(Django的视图层,Django的模板层)

    昨日内容回顾 相关命令: 1 创建项目 django-admin startproject 项目名称 2 创建应用 python manage.py startapp app名称 3 启动项目 pyt ...

  9. 052.Python前端Django框架路由层和视图层

    一.路由层(URLconf) 1.1 路由层简单配置 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Dj ...

  10. Django框架(四) Django之视图层

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

随机推荐

  1. 采用VSPD、ModbusTool模拟串口、MODBUS TCP设备进行Python采集软件开发

    版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 不少仪器/设备都提供了数据采集的接口,其中不少是串口或网络的MODBUS/TCP协议. 串口是比较简单 ...

  2. 关于mysql主从架构master宕机后,请求转移问题解决办法

    mysql架构:一主一从 问题一:有两台mysql数据库,已做好主从.如果运行某一天master服务器mysql故障导致前端请求无法处理怎么办? 答:将前端需要数据库处理的请求转移到slave机上. ...

  3. 使用mongo-express管理mongodb数据库

    前面的话 本文将详细介绍一款用nodejs开发的基于Web的mongodb数据库管理工具mongo-express 安装 首先,全局安装 mongo-express 包 npm install -g ...

  4. Platform.Uno介绍

    编者语:Xamarin国内很多人说缺乏可用的实例,我在写书过程中在完善一些常用场景的例子,希望帮到大家.Build 2018结束一周了,善友问我要不要谈谈Xamarin的一些变化,但碍于时间有限一直没 ...

  5. Linux-GitLab安装及汉化

    gitlab 安装及汉化 GitLab简介: GitLab是一个用于仓库管理系统的开源项目.使用Git作为代码管理工具,并在此基础上搭建起来的Web服务.可通过Web界面进行访问公开的或者私人项目.它 ...

  6. [SDOI2011]消耗战(虚树)

    洛古题面 题意:给定一棵树,割断每一条边都有代价,每次询问会给定一些点,求用最少的代价使所有给定点都和1号节点不连通 暴力\(DP\) 我们先考虑暴力怎么做 设\(dp[u]\)为以\(u\)为根的子 ...

  7. mysql 设置允许重试,批量更新

    jdbc:mysql://ip:port/base?allowMultiQueries=true&autoReconnect=true 在mybatis中批量更新 需要在mysql的url上设 ...

  8. Pandas系列(三)-缺失值处理

    内容目录 1. 什么是缺失值 2. 丢弃缺失值 3. 填充缺失值 4. 替换缺失值 5. 使用其他对象填充 数据准备 import pandas as pd import numpy as np in ...

  9. Linux系统在线安装、启动 redis

    环境: Linux系统:VMware 14 中 CentOS 7 64 位 redis版本:redis-stable.tar.gz(当前版本是:redis-cli 4.0.9) 一.Linux在线安装 ...

  10. 第二节: 比较EF的Lambda查询和Linq查询写法的区别

    简介 在前面EF的介绍中,曾多次提到过EF可以使用Lambda和Linq来完成对数据库的访问,这两种的语法的具体使用和注意事项在前面的DotNet进阶的系列章节中已经详细介绍过了,本次借着EF章节,重 ...