zoukankan      html  css  js  c++  java
  • Django(三)RESTFul之Django

    RESTFul是一个API设计的规范,是在前后端分离的web开发中规范数据传输的接口,使前后端交互统一高效。

    RESTful 的核心思想就是,客户端发出的数据操作指令都是"动词 + 宾语"的结构。比如,GET /articles这个命令,GET是动词,/articles是宾语(是复数形式)。如果是单数操作一般指明操作数据的id(pk)。GET /articles/?pk=1

    动词通常就是五种 HTTP 方法,对应 CRUD 操作(可以直接应用相应的请求方式)

    • GET:读取(Read)
    • POST:新建(Create)
    • PUT:更新(Update)
    • PATCH:更新(Update),通常是部分更新
    • DELETE:删除(Delete)

    对于只能发GET和POST的客户端可以用X-HTTP-Method-Override:PUT,指定请求方式

    Django中使用RESTFul

    安装模块:pip install djangorestframework

    配置和使用:

        settings中:INSTALL_APPS = [… , ’rest_framework’,]

    djangorestframework的核心是序列化:

    在app中创建serializers.py文件,里面编写需要序列化的模型和模式。

      1 
      2 from rest_framework import serializers
      3 from app01.models import *
      4 
      5 # 定义序列化程序
      6 class UserInfoSerializer(serializers.ModelSerializer):
      7     '''指定需要序列化的模型和字段'''
      8     class Meta:
      9         model = Book  # 数据库表名
     10         fields = '__all__' # 所有的字段都要
    序列化模型格式:

    views.py中应用类视图并继承rest_framework中的包

      1 from rest_framework.viewsets import ModelViewSet
      2 from app01.serializers import *
      3 
      4 class UserInfoView(ModelViewSet):
      5     queryset = Book.objects.all() # 获取查询结果集
      6     serializer_class = UserInfoSerializer # 指定序列化器
      7 
    views中的写法:

    urls.py中的路由可以用rest_framework中的DefaultRouter来指定路由集

      1 from rest_framework.routers import DefaultRouter
      2 # 定义视图处理的路由器
      3 router = DefaultRouter()
      4 router.register('users',views.UserInfoView,base_name='')  # 在路由器中注册视图集
      5 
      6 urlpatterns = [
      7 
      8 ]
      9 
     10 urlpatterns += router.urls
     11 
     12 -----------------------------------------------------------------
     13 # 主路由中
     14 path('api/', include((router.urls, 'app_name'), namespace='instance_name')),
    urls中路由集的写法:

    将server以0.0.0.0:8000,的形式启动,重点是0.0.0.0意思是可以所有ip访问

    这样就可以在主机上访问虚拟机中的项目,方便调试。

  • 相关阅读:
    什么是Portal!
    Maven 让事情变得简单
    HTTP协议详解
    函数实现不放在头文件的原因,及何时可以放头文件的情况
    Linux中的内存管理(四)Heap
    寿星万年历Lua实现
    TCP epoll触发后只accept一次带来的问题
    生产者消费者问题
    Windows SDK 实现不规则窗口
    论迭代式的产品开发方法
  • 原文地址:https://www.cnblogs.com/yulincoco/p/11934166.html
Copyright © 2011-2022 走看看