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中取出来

转载于:https://www.cnblogs.com/yaoxiaofeng/p/9937271.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
明日问题的输入事件与输出事件为: | Input Events | Node Output Event description Node . e0: start program event 1 e7: Welcome message 2 e1: center a valid month 6e8: print today's date 4 e2: enter an invalid month 67| e9: print tomorrow's date 6 e3: enter a valid day 69 e10: "month OK" 39 e4: enter an invalid day 69 e11: "month out of range" 41 e5: enter a valid year 71 e12: "day OK" 4 e6: enter an invalid year 71 e13: "day out of range" 4S e14: "year OK" 54 e15: "year out of range" 5( e16: "Date OK" 6C e17: "please enter a valid date" 62 e18: "enter a month" 6( e19: "enter a day" 68 e20: "enter a year" 70 c21: "Day is month, day, year" 8S 在下表中,ASF-6对应的输入事件为: 输出事件 ASF-7对应的输入事件为: 输出事件 为:_ ASF-8对应的输入事件为:_, 输出事件 为:_ ASF-9对应的输入事件为:_,输 出事件 为:_ Atomic System Function Inputs Outputs L ASF-1 start program e0 e7 | ASF-2 enter a date with an invalid month, valid day and valid year e2, e3,e5 e11,e12,e14,e17 | ASF-3 enter a date with an invalid day, valid month and validyear| e1, c4,e5 e10,e13,e14,e17 | ASE-4 enter a date wih an ivalid year, valid day and valid monh| el,e3, c6 e10,e12, el5,e17| ASF-5 enter a date with valid month, day, and year e1,e3,e5 . e10, e12, e14, e16, c21 | ASIF-6 enter a date with valid month, day and year invalid ASF-7 enter a date with valid day, month and year invalid ASF-8 enter a date with valid year, day and month invalid ASF-9 enter a date with invalid month, day, year
06-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值