zoukankan      html  css  js  c++  java
  • 0731 #Django rest framework

    FBV:Function base views
    def index(request):
        if request.method == 'POST':
            return HTTPresponse(‘ok’)
        elif request.method == 'GET':
            return render(request,'index.html')

    CBV : class base views
    URLS:    
        urlpatterns=[
            url(r'^index/',views.Index.as_view())
        ]
        注:url(r'^index/',views.Index.as_view())是固定用法


    views.py
    from django import views
    class Index(views.View):
        def get(self,request):
            return render(request,'index.html')
            
        def post(self,request):
            print(request.POST)
            return render(request,'index.html')
            
        注意事项:
            1.CBV定义时一定要继承django.views.View
            2.注册路由的时候要写类名 .as_view()
            3.具体原理:dispatch()方法中利用反射找到每个请求要执行的
        
        2.前后端分离
            1.前端:
                - APP
                - PC网站    
                - 移动端网站
        
            2.后端提供    JSON格式数据
            
            3.接口(API)是什么?
                URL
            4.小项目
                1. 使用Django 的视图 自己序列化
                    1. HttpResponse
                    2. JsonResponse
                2. 使用Django REST Framework 框架的序列化工具类
                    1. 安装
                        pip install djangorestframework
                    2. 导入
                        from rest_framework import serializers
                    3. 使用
                        class ArticleSerializer(serializers.Serializer):

    官方网址:

    http://www.django-rest-framework.org/

    中文文档:

    https://q1mi.github.io/Django-REST-framework-documentation/

    实例:
    from
    django.http import JsonResponse from app01 import models from rest_framework import serializers class DBG(serializers.Serializer): id = serializers.IntegerField() title = serializers.CharField() create_time = serializers.DateField() update_time = serializers.DateField() type = serializers.CharField(source='get_type_display') school = serializers.CharField(source="school.name")
    #和ORM类绑定的序列化
    class CYM(serializers.ModelSerializer): class Meta: model = models.Article #绑定的哪一个类 fields = '__all__'  #['id','name','title'] depth = 1 #官方推荐不超过10层 有外键关联时,才需要设置depth参数 def list1(request): query_set = models.Article.objects.all() print(query_set) xbg = CYM(query_set,many = True)
      return JsonResponse(xbg.data,safe=False)

    参数解释:

    many=True  表示能序列化多个对象


    补充知识点:
        1. pip
            1. pip安装包临时指定 从国内的清华pip源下载:
                pip install django==1.11.11 -i https://pypi.tuna.tsinghua.edu.cn/simple
            2. 将虚拟环境的依赖包关系导出到requirements.txt    
                pip freeze > requirements.txt
                
            3. 按照 requirements.txt 安装项目依赖的第三方包
                pip install -r requirements.txt
        2. 在单独py文件运行django orm语句
            import os

            if __name__ == "__main__":
                os.environ.setdefault("DJANGO_SETTINGS_MODULE", "about_drf.settings")
                import django
                django.setup()

                from app01 import models
                ...
        
        3. 可调用对象
            def xx(arg):
                if callable(arg):
                    print(arg())
                else:
                    print(arg)

            xx('呵呵')
            xx(lambda:'嘿嘿嘿')

  • 相关阅读:
    [LeetCode]603. 连续空余座位(Mysql、自连接)
    [LeetCode]671. 二叉树中第二小的节点(递归)
    [LeetCode] 203. 移除链表元素(链表基本操作-删除)、876. 链表的中间结点(链表基本操作-找中间结点)
    [LeetCode]26. 删除排序数组中的重复项(数组,双指针)
    C# 把引用的dll嵌入到exe文件中
    iptables规则表
    [转载]EF Code First 学习笔记:约定配置
    使用itunes同步ios时丢失照片恢复
    USB硬件远程共享解决iphone已停用
    C# 非独占延时函数 非Sleep
  • 原文地址:https://www.cnblogs.com/Mr-Murray/p/9397839.html
Copyright © 2011-2022 走看看