• Django学习日志05


    视图层

    三板斧的使用

    HttpResponse: 字符串
    render:渲染html页面
    redirect:重定向的

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

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

    JsonResponse序列化类的使用

    序列化
    json格式的数据
    {"a":1}
    json有什么用:
        跨语言传输
    序列化:json.dumps
    反序列化:json.loads

    1. from django.http import JsonResponse
    2. def index(request):
    3. # user_dict = {'username':'kevin你好'}
    4. user_dict = [1, 2, 3, 4]
    5. # res=json.dumps(user_dict,ensure_ascii=False)
    6. # return HttpResponse(res)
    7. # 通过看源码学技术
    8. # return JsonResponse(user_dict,json_dumps_params={'ensure_ascii':False})
    9. return JsonResponse(user_dict,safe=False)
    10. # return render(request,'index.html')

    form表单上传文件

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


    1. 请求方式必须是post
    2. enctype="multipart/form-data"

    1. print(request.POST) # 接收的都是普通的数据,非文件数据
    2. # ]}>
    3. print(request.FILES) # 只接受文件数据,普通数据还在request.POST里面
    4. def index(request):
    5. # user_dict = {'username':'kevin你好'}
    6. user_dict = [1, 2, 3, 4]
    7. # res=json.dumps(user_dict,ensure_ascii=False)
    8. # return HttpResponse(res)
    9. # 通过看源码学技术
    10. # return JsonResponse(user_dict,json_dumps_params={'ensure_ascii':False})
    11. # return JsonResponse(user_dict,safe=False)
    12. # return JsonResponse(user_dict,safe=False)
    13. #
    14. #
    15. print(request.POST)
    16. # ]}>
    17. file_obj=request.FILES.get('myfile')
    18. # file_list = file_obj.name.split('.') # 123.png
    19. # import uuid
    20. # random_str=str(uuid.uuid4())
    21. # file_name = random_str + file_obj.name.split('.')[-1]
    22. # with open(file_name, 'wb') as f:
    23. # for line in file_obj:
    24. # f.write(line)
    25. # print(request.body) # 接收纯原生的二进制数据,没有任何的处理 b''----> str---->decode---->dict...
    26. # print(request.POST.get('')) # 之所以你能够直接按照字典的方式取值,是因为django给做了封装
    27. print(request.path) # /index/ /index/
    28. print(request.path_info) # /index/ /index/
    29. print(request.get_full_path()) # /index/ /index/?a=1&b=2
    30. print(request.GET.get(''))
    31. return render(request,'index.html')

    CBV的写法

    1. FBV: function based view # 写的都是函数
    2. CBV: class based view # 写的都是类
    3. from django.views import View
    4. class MyLogin(View):
    5. def get(self, request):
    6. print('get。。。')
    7. return HttpResponse("get")
    8. def post(self, request):
    9. return HttpResponse("hello postman!!!")
    10. url(r'^login/', views.MyLogin.as_view()),

    CBV的源码分析

    1. # 入口
    2. url(r'^login/', views.MyLogin.as_view()),
    3. # View类中得as_view方法的返回值是view函数名
    4. # 当请求来的时候,会触发view函数的执行
    5. def view(request, *args, **kwargs):
    6. # cls:Mylogin()------>self对象
    7. self = cls(**initkwargs)
    8. return self.dispatch(request, *args, **kwargs) # View类里的dispatch
    9. def dispatch(self, request, *args, **kwargs):
    10. if request.method.lower() in self.http_method_names:
    11. handler = getattr(self, request.method.lower(), self.http_method_not_allowed)
    12. else:
    13. handler = self.http_method_not_allowed
    14. return handler(request, *args, **kwargs)
    15. from django.views import View
    16. class MyLogin(View):
    17. http_method_names = ['get', 'post']
    18. def get(self, request):
    19. print('get。。。')
    20. self.index()
    21. return HttpResponse("get")
    22. def post(self, request):
    23. return HttpResponse("hello postman!!!")
    24. def index(self):
    25. pass

     权限、频率、jwt的源码

    模板层值模版变量

    在html页面中写一个python的代码
    PHP:不是后端语言,前端 操作数据量,写逻辑,都可以
    python也有点像

    {{ 写变量 }}
    {% 写逻辑 %}

    {{ d.0 }}
    {{ d.1 }}
    {{ d.3 }}
    {{ user_dict.hobby.2 }}
    {{ index }}
    {{ obj.score }}

  • 相关阅读:
    基于java网上蛋糕销售系统的设计与实现——计算机毕业设计
    自定义Dynamics 365实施和发布业务解决方案 - 1. 准备工作
    普本毕业,已经工作2年,还能转行做Java吗?
    开源大数据管理平台选型
    2022年“新一代”设备管理系统——支持低代码平台
    NIO中ByteBuffer
    Conmi的正确答案——linux硬盘管理命令(持续更新中)
    电脑硬件——CPU
    零基础想自学软件测试,有没有大佬可以分享下接下来的学习书籍和路线?
    Java面向对象8——接口(内含IDEA中有关创建接口的创建说明)
  • 原文地址:https://blog.csdn.net/safvirtu/article/details/134408373