Django框架之视图函数(day74)
一 作业相关
 urlpatterns = [
   url(r'^$',views.book),  #根路径,响应到指定视图函数:
   .....
   url(r'',views.errors),  #没有配置的路径,响应到错误的视图函数:
  ]
二 虚拟环境创建方法
  1 用pychanrm创建--->files-->newproject--->选择虚拟环境
  2 settings-->project创建
  3 用命令行创建,详见https://www.cnblogs.com/liuqingzheng/p/9508851.html
三 django 2.0和django 1.0 路由层区别
 1 url,re_path分组分出来的数据,是字符串*****
 2 re_path:跟1.0的url用法相同
 3 path:传的路径,是准确路径
 4 5个转换器-->path('test/<path:year>', views.re_test),
  str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
  int,匹配正整数,包含0。
  slug,匹配字母、数字以及横杠、下划线组成的字符串。
  uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
  path,匹配任何非空字符串,包含了路径分隔符(/)(不能用?)
 5 自定义转换器
  1 定义一个类:
   class MyCon:   
    regex = '[0-9]{4}'          # 写一个正则表达式  
    def to_python(self, value): # 匹配出來的数据,会传到这里,retrun回去的,会被视图函数接收
     return int(value)   
    def to_url(self, value):    # 反向解析用的
     return '%04d' % value
  2 from django.urls import register_converter
    register_converter(MyCon,'yyy')   #重命名
  3 path('test/<yyy:year>', views.re_test,name='test'),
 6 补充: 在settings中如果设置: APPEND_SLASH=False  为假,不会加反斜杠
四 视图层之HttpRequest对象
 1 前台Post传过来的数据,包装到POST字典中
  # request.POST
 2 前台浏览器窗口里携带的数据,包装到GET字典中
  # request.GET
 3 前台请求的方式
  # request.method
 4 post提交的数据,body体的内容,前台会封装成:name=lqz&age=18&sex=1
  # request.body
 5 取出请求的路径,取不到数据部分
  # print(request.path)
 6 取出请求的路径,能取到数据部分
  # print(request.get_full_path())
  # print(request.META)
五 视图层之HttpResponse对象
 三件套:render,HttpResponse,redirect
 render函数:
  temp=Template('<h1>{{ user }}</h1>')
  con=Context({'user':'lqz'})
  ret=temp.render(con)  
  return HttpResponse(ret)
  #等效于上面四步:return render(request,'index.html')
六 视图层之JsonResponse对象
 1 导入:from django.http import JsonResponse
 2 视图函数中:
  def test(request):
   import json
   # dic={'name':'lqz','age':18}
   ll = ['name', 'age']
   # 把字典转换成json格式,返回到前台
   # return HttpResponse(json.dumps(dic))
   # 把列表转换成json格式,返回到前台
   # return HttpResponse(json.dumps(ll))
   # 把字典转换成json格式,返回到前台
   # return JsonResponse(dic)
   # 报错,默认不支持列表形式
   # return JsonResponse(ll)
   # 支持列表形式
   return JsonResponse(ll,safe=False)
七  CBV和FBV
 1 CBV基于类的视图
  1 路由层:url(r'^test/', views.Test.as_view()),
  2 视图层
   导入:from django.views import View
   写一个类:
    class Test(View):
     def get(self, request): #一定要传request对象
      return HttpResponse('get-test')
     def post(self, request):
      return HttpResponse('post-test')
 2 FBV基于函数的视图 
八 简单文件上传
 1 前端部分:
  <form action="" method="post" enctype="multipart/form-data">
  {#<form action="" method="post" enctype="application/x-www-form-urlencoded">#}
   <input type="file" name="myfile">
   <input type="text" name="password">
   <input type="submit" value="提交"></form>
 2 后台部分:
  def fileupload(request):
   if request.method=='GET':
    return render(request,'fileupload.html')
   if request.method=='POST':    
    print(request.FILES)
    print(type(request.FILES.get('myfile')))   
    myfile=request.FILES.get('myfile') # 从字典里根据名字,把文件取出来
    from django.core.files.uploadedfile import InMemoryUploadedFile    
    name=myfile.name # 文件名字
    with open(name,'wb') as f:
     # for line in myfile.chunks():
     for line in myfile:
      f.write(line)
    return HttpResponse('ok')
 3 补充:编码方式multipart/form-data或者:application/x-www-form-urlencoded传的数据,都可以从POST中取出来
九 作业:
 1 手动创建虚拟环境--用命令
 2 往前台返回user字典:[{name:lqz,age:18},{name:lqz2,age:18}]
 3 写一个文件上传:如果文件名字重复,不要覆盖,并且放到项目根路径的media文件夹下

Day74的更多相关文章

  1. python 全栈开发,Day74(基于双下划线的跨表查询,聚合查询,分组查询,F查询,Q查询)

    昨日内容回顾 # 一对多的添加方式1(推荐) # book=Book.objects.create(title="水浒传",price=100,pub_date="164 ...

  2. (转)python 全栈开发,Day74(基于双下划线的跨表查询,聚合查询,分组查询,F查询,Q查询)

    昨日内容回顾 # 一对多的添加方式1(推荐) # book=Book.objects.create(title="水浒传",price=100,pub_date="164 ...

  3. day74天中间件介绍

    一. importlib settings 执行结果: 两个process_request  process_response按照注册顺序的倒叙进行执行 PROCESS_VIEW  Process_v ...

  4. day74 bbs项目☞点赞与评论

    目录 一.文章详情展示 1 将侧边栏做成inclusion_tag 二.点赞点踩功能 三.评论功能 整体总结: 在出现bug的时候,先判断是前端bug还是后端bug,再判断bug错误类型,以及报错信息 ...

  5. day74:drf:drf其他功能:认证/权限/限流/过滤/排序/分页/异常处理&自动生成接口文档

    目录 1.django-admin 2.认证:Authentication 3.权限:Permissions 4.限流:Throttling 5.过滤:Filtering 6.排序:OrderingF ...

  6. Linux下批量修改文件名方法

    对于在Linux中修改文件名的方式一般我们会用mv命令进行修改,但是mv命令是无法处理大量文件修改名称. 但是在处理大量文件的时候该如何进行批量修改呢? 方法一:mv配合for循环方式进行修改 [ro ...

  7. 100 天从 Python 新手到大师

    Python应用领域和就业形势分析 简单的说,Python是一个“优雅”.“明确”.“简单”的编程语言. 学习曲线低,非专业人士也能上手 开源系统,拥有强大的生态圈 解释型语言,完美的平台可移植性 支 ...

  8. 中间件详解,Django复习

    day74 2018-05-21 课程安排周一: 中间件 auth模块+分析BBS项目需求(小组讨论把表结构设计出来) 1. 今日内容 中间件:http://www.cnblogs.com/liwen ...

  9. day 74ajax

    w3school地址ajax教程 ajax定义: AJAX(Asynchronous Javascript And XML) 翻译成中文就是'异步JavaScript和XML',也就是使用JavaSc ...

随机推荐

  1. md5Util

    package com.rscode.credits.util; /** * MD5加密类 * @author 12 */ import java.security.MessageDigest; pu ...

  2. javascript最全最好的判断数组的方法

    var arr = [1,2,3,1]; var arr2 = [{ abac : 1, abc : 2 }]; function isArrayFn(value){ if (typeof Array ...

  3. day11.2lambda函数表达式 及其返回值注意事项

    lambda表达式 用于表示简单的函数 func1=lambda 参数:一句话函数体(默认返回函数体内执行的内容) 1.1结构 func=lambda a1,a2 : a1+100 val=func( ...

  4. 跨域访问技术CORS(Cross-Origin Resource Sharing)简介

    为什么要用CORS? CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing). 它允许浏览器向跨源服务器,发出XMLHttp ...

  5. Appium环境搭建——安卓真机调试注意点

    1.安卓设备连接失败 通过adb devices命令 查看安卓设备的连接情况,如图,未成功连接 解决方法: (1)关闭360安全卫士和360手机助手(2)查看5037端口是否被占用 netstat - ...

  6. 学习笔记CB006:依存句法、LTP、n元语法模型、N-最短路径分词法、由字构词分词法、图论、概率论

    依存句法分析,法国语言学家L.Tesniere1959年提出.句法,句子规则,句子成分组织规则.依存句法,成分间依赖关系.依赖,没有A,B存在错误.语义,句子含义. 依存句法强调介词.助词划分作用,语 ...

  7. C# 程序修改config文件后,不重启程序刷新配置ConfigurationManager

    基本共识: ConfigurationManager 自带缓存,且不支持 写入. 如果 通过 文本写入方式 修改 配置文件,程序 无法刷新加载 最新配置. PS. Web.config 除外:Web. ...

  8. [转]在ASP.NET Core中使用百度在线编辑器UEditor

    原文地址:https://www.cnblogs.com/durow/p/6116393.html 0x00 起因 最近需要一个在线编辑器,之前听人说过百度的UEditor不错,去官网下了一个.不过服 ...

  9. 【Jmeter】Address already in use : connect &&Permission denied: connect 解决方案

    Address already in use : connect   该问题的原因为: Windows 提供给 TCP/IP链接的端口为 1024-5000,并且要四分钟来循环回收他们.就导致我们在短 ...

  10. 使用LFSR搭建误差补偿系统

    使用LFSR搭建误差补偿系统 首先弄明白什么是LFSR 线性反馈移位寄存器(LFSR)是内测试电路中最基本的标准模块结构,既用作伪随机测试码产生器,也作为压缩测试结果数据的特征分析器. 一个n阶的LF ...