zoukankan      html  css  js  c++  java
  • day69


    昨日回顾:
     1 路由层:
      1简单配置
      2无名分组
      3有名分组
      4反向解析--模板层,视图层
      5路由分发  include
      6名称空间
      7伪静态
     2 作业:
      urlpatterns = [
       url(r'^$',views.book),#根路径,响应到指定视图函数:
       .....
       url(r'',views.errors),#没有配置的路径,响应到错误的视图函数:
      ]
      
    今日内容:
     1 虚拟环境
      1 用pychanrm创建--->files-->newproject--->选择虚拟环境
      2 settings-->project创建
      3 用命令行创建,详见https://www.cnblogs.com/liuqingzheng/p/9508851.html
     2 django 2.0和django 1.0 路由层区别(*****url,re_path分组分出来的数据,是字符串)
      -re_path:跟1.0的url用法相同
      -path:传的路径,是准确路径
       5个转换器-->path('test/<path:year>', views.re_test),
       str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
       int,匹配正整数,包含0。
       slug,匹配字母、数字以及横杠、下划线组成的字符串。
       uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
       path,匹配任何非空字符串,包含了路径分隔符(/)(不能用?)
      -自定义转换器
       1 定义一个类:
        class MyCon:
         # 写一个正则表达式
         regex = '[0-9]{4}'
         # 匹配出來的数据,会传到这里,retrun回去的,会被视图函数接收
         def to_python(self, value):
          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'),
     2.1补充:
      # 为假,不会加反斜杠
      # APPEND_SLASH=False
     3 视图层之HttpRequest对象
      # 前台Post传过来的数据,包装到POST字典中
      # request.POST
      # 前台浏览器窗口里携带的数据,包装到GET字典中
      # request.GET
      # 前台请求的方式
      # request.method
      # post提交的数据,body体的内容,前台会封装成:name=lqz&age=18&sex=1
      # request.body
      # 取出请求的路径,取不到数据部分
      # print(request.path)
      # 取出请求的路径,能取到数据部分
      # print(request.get_full_path())
      # print(request.META)
     4 视图层之HttpResponse对象
      三件套:render,HttpResponse,redirect
      render函数:
       temp=Template('<h1>{{ user }}</h1>')
       con=Context({'user':'lqz'})
       ret=temp.render(con)
       print(ret)
       # return render(request,'index.html')
       return HttpResponse(ret)
      
     5 视图层之JsonResponse对象
      -导入:from django.http import JsonResponse
      -视图函数中:
       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)
     6 CBV和FBV
      -基于类的视图
       -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')
      -基于函数的视图   
      
     7 简单文件上传
      前端:
       <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>
      后台:
       def fileupload(request):
        if request.method=='GET':
         return render(request,'fileupload.html')
        if request.method=='POST':
         # FILES
         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')
     
      补充:*****编码方式multipart/form-data或者:application/x-www-form-urlencoded传的数据,都可以从POST中取出来
  • 相关阅读:
    苹果一体机发射Wi-Fi
    iphone 屏蔽系统自动更新,消除设置上的小红点
    data parameter is nil 异常处理
    copy与mutableCopy的区别总结
    java axis2 webservice
    mysql 远程 ip访问
    mysql 存储过程小问题
    mysql游标错误
    is not writable or has an invalid setter method错误的解决
    Struts2中关于"There is no Action mapped for namespace / and action name"的总结
  • 原文地址:https://www.cnblogs.com/yaoxiaofeng/p/9937271.html
Copyright © 2011-2022 走看看