当前位置: 首页 > news >正文

哈尔滨网络宣传与网站建设wordpress中文完全教程

哈尔滨网络宣传与网站建设,wordpress中文完全教程,自媒体营销,网站安全狗 服务名目录 一、三板斧的使用 二、JsonReponse序列化类的使用 三、 form表单上传文件 数据准备 数据处理 (1)post请求数据 (2)文件数据获取 四、 FBV与CBV 五、CBV的源码分析 as_view 方法 一、三板斧的使用 HttpResponse 返回字符串类型render 渲染html页面,并…

目录

一、三板斧的使用

二、JsonReponse序列化类的使用

三、 form表单上传文件

数据准备

数据处理

(1)post请求数据

(2)文件数据获取

四、 FBV与CBV

五、CBV的源码分析

as_view 方法


一、三板斧的使用

  • HttpResponse
    • 返回字符串类型
  • render
    • 渲染html页面,并且在返回给浏览器之前还可以给html页面传值
  • redirect
    • 重定向页面

在视图文件中写视图函数的时候不能没有返回值了,默认返回的是None,页面上就会报错

def render(request, template_name, context=None, content_type=None, status=None, using=None):content = loader.render_to_string(template_name, context, request, using=using)return HttpResponse(content, content_type, status)

二、JsonReponse序列化类的使用

json格式的数据:{"a":1}
json有什么用:跨语言传输

序列化:json.dumps
反序列化:json.loads

from django.http import JsonResponse
def index(request):# user_dict = {'username':'kevin你好'}user_dict = [1, 2, 3, 4]# res = json.dumps(user_dict,ensure_ascii=False)# return  HttpResponse(res)# return JsonResponse(user_dict,json_dumps_params={'ensure_ascii':False})return JsonResponse(user_dict,safe=False)# return render(request,'index.html')

三、 form表单上传文件

<form action="" method="post" enctype="multipart/form-data"></form>

form表单上传数据需要满足的条件:

  1. 请求方式必须是post
  2. enctype参数必须指定成 form-data 类型

数据准备

  • 路由
# form 表单上传 下载文件
url('^ab_file/',views.ab_file),
  • 前端 
<form action="" method="post" enctype="multipart/form-data" class="form form-control"><p>username:<input type="text" name="username" class="form-control"></p><p>file:<input type="file" name="file" class="form-control"></p><input type="submit">
</form>

数据处理

(1)post请求数据
def ab_file(request):if request.method == 'POST':# 只能获取到普通的文本数据,无法获取到文件数据print(request.POST)return render(request, 'file.html')
<QueryDict: {'username': ['dream']}>
  • 通过这种方式,我们只能获取到我们输入的文本数据,而拿不到我们想要的文件数据
(2)文件数据获取
def ab_file(request):if request.method == 'POST':# 获取文件数据print(request.FILES) # <MultiValueDict: {'file': [<InMemoryUploadedFile: img.png (image/png)>]}># 提取文件数据 - 文件对象file_obj = request.FILES.get('file')# 提取文件名字 file_obj.namewith open(file_obj.name, 'wb') as f:# 逐行读取文件数据# 官方推荐 加上 chunks 方法 等价于 一行行获取for line in file_obj.chunks():f.write(line)return render(request, 'file.html')
<MultiValueDict: {'file': [<InMemoryUploadedFile: img.png (image/png)>]}>

四、 FBV与CBV

FBV:function based view -----》写的都是函数

CBV:class based view    -----》写的都是类

CBV视图

from django.views import Viewclass MyLogin(View):def get(self, request):print('get...')return HttpResponse("get")def post(self, request):return HttpResponse("hello postman!!!")url(r'^login/', views.MyLogin.as_view()),

MBV和CBV各有各的特点,都有应用

  • CBV特点
    • 能够直接根据请求方式的不同直接匹配到对应的方法执行

五、CBV的源码分析

as_view 方法

路由对应函数内存地址:

url(r'^login/', views.MyLogin.as_view()),

方法/函数名 加 括号 执行优先级最高

  • View类中得as_view方法的返回值是view函数名
  • 当请求来的时候,会触发view函数的执行
def view(request, *args, **kwargs):# cls:Mylogin()------>self对象self = cls(**initkwargs)return self.dispatch(request, *args, **kwargs)  # View类里的dispatchdef dispatch(self, request, *args, **kwargs):if request.method.lower() in self.http_method_names:handler = getattr(self, request.method.lower(), self.http_method_not_allowed)else:handler = self.http_method_not_allowedreturn handler(request, *args, **kwargs)from django.views import Viewclass MyLogin(View):http_method_names = ['get', 'post']def get(self, request):print('get...')self.index()return HttpResponse("get")def post(self, request):return HttpResponse("hello postman!!!")def index(self):pass

小结

url(r'^login/', views.MyLogin.as_view()),
  • 当我们启动Django项目时
  • 会自动触发路由中的方法,调用 as_view 方法并自执行
  • 在执行后我们查看 as_view 方法的源码 发现
    • 在依次给我们的对象赋值后,最终返回了一个自执行的 dispatch 方法
  • 于是我们又去查看了 dispatch 方法
    • 在 dispatch 内部 ,先是将请求方式转换并进行校验
    • 然后开始校验需要调用的方法的调用位置,校验成功并拿到需要执行的方法执行
  • 在自己写的类中如果有相关的方法,会首先调用我们重写的类方法,并返回执行结果
    • 如果自己的类里面没有该方法 会去自己的父类中调用 父类的方法
      • 如果父类 以及 基类 都找不到则报错,抛出异常
http://www.ijyty.com/news/55449.html

相关文章:

  • 做网站网站判刑多少年广东省东莞市有几个区
  • 网站标题一样郑州华恩科技做网站怎么样
  • 石家庄网站建设雨点牛软件开发外包公司的设计一般多少钱
  • 哪些网站做平面设计素材高端企业网站建设好的公司
  • 长春网站网络公司湖北建设工程信息网官网
  • 做网站收入怎样南宁网站建设王道下拉強
  • 青海省住房和城乡建设厅门户网站wordpress tint
  • 衡阳网站开发子页面的网站地址怎么做
  • 徐州市建设银行网站怎样建立网站的快捷方式
  • 网站建设费的会计分录深圳有没有维护公司网站
  • 网站建设明细表wordpress评论数据表
  • 不是万维网的网站小程序制作软件
  • 包装设计网站素材企业管理公司是干嘛的
  • 网站建设推广选哪家温州论坛网站首页
  • 浙江巨鑫建设有限公司网站风中有朵雨做的云电影网站
  • 网站建设的静态网页作业steam交易链接在哪看
  • 地州电视网站建设流程品牌推广网络公司
  • 中国在数码网站注册域名好>网站建设全屏
  • 为什么建设网站怎么免费注册自己的网站
  • 建筑行业数据开放平台官网济宁优化推广公司
  • 网页设计与网站建设电话中国旅游预订网站的建设始于哪一年
  • 买程序的网站wordpress 热门排序
  • 做物流哪个网站推广好温州网站建设价格技术
  • 视觉差网站插件网络服务器机柜
  • 企业网站建设兴田德润很赞科技苑
  • html5制作的网站网站刷收益是怎么做的
  • 注册网站借钱平台犯不犯法柒零叁网站建设湖南长沙
  • 网站建设什么服务器好wordpress 极简模板
  • 威海网站开发还有哪些免费的网站可以做H5
  • 绵阳网站建设哪家好久久建筑网怎么样