“Django RESTful api”的版本间的差异
跳到导航
跳到搜索
(→files) |
(→files) |
||
第69行: | 第69行: | ||
== files== | == files== | ||
<pre> | <pre> | ||
+ | |||
+ | # 接下来需要做的就是创建 Serializer 类,类似于 Form。它的作用就是从你传入的参数中提取出你需要的数据,并把它转化为 json 格式(注意,已经是字节码了),同时支持反序列化到model对象。在 snippets 文件夹中添加 serializers.py 并在其添加如下: | ||
# on api/serializers.py | # on api/serializers.py | ||
2021年6月7日 (一) 07:14的版本
知识点
RESTful API现在很流行,这里是它的介绍 理解RESTful架构 和 RESTful API设计指南. 按照Django的常规方法当然也可以实现REST,但有一种更快捷、强大的方法,那就是 Django REST framework.它是python的一个模块,通过在Django里面配置就可以把app的models中的各个表实现RESTful API
过程
install
pip3 install djangorestframework #Django REST Framework pip3 install markdown # Markdown support for the browsable API. pip3 install django-filter # Filtering support
创建API
python3 manage.py startapp api #当然 得先创建项目
setting.py 添加 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'api', ] REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated', ) } 数据库迁移 python3 manage.py makemigrations python3 manage.py migrate 用我以前创建的可以用 创建数据 点击主页右上角的Log in登录超级管理员账户,然后分别创建Group和User数据 创建用户和组在这里 HTTP 200 OK Allow: GET, HEAD, OPTIONS Content-Type: application/json Vary: Accept { "users": "http://127.0.0.1:8000/users/?format=api", "groups": "http://127.0.0.1:8000/groups/?format=api" }
files
# 接下来需要做的就是创建 Serializer 类,类似于 Form。它的作用就是从你传入的参数中提取出你需要的数据,并把它转化为 json 格式(注意,已经是字节码了),同时支持反序列化到model对象。在 snippets 文件夹中添加 serializers.py 并在其添加如下: # on api/serializers.py from django.contrib.auth.models import User,Group from rest_framework import serializers class UserSerializer(serializers.HyperlinkedModelSerializer): class Meta: model=User fields=('url','username','email','groups') class GroupSerializer(serializers.HyperlinkedModelSerializer): class Meta: model=Group fields=('url','name') #视图 on api/views.py from django.shortcuts import render from django.contrib.auth.models import User,Group from rest_framework import viewsets from api.serializers import UserSerializer,GroupSerializer # Create your views here. class UserViewSet(viewsets.ModelViewSet): queryset = User.objects.all() serializer_class = UserSerializer class GroupViewSet(viewsets.ModelViewSet): queryset = Group.objects.all() serializer_class = GroupSerializer # Create your views here. #URL路由配置 项目名下的 /urls.py from django.contrib import admin from django.urls import path from django.conf.urls import include from rest_framework import routers from api import views router=routers.DefaultRouter() router.register(r'users',views.UserViewSet) router.register(r'groups',views.GroupViewSet) urlpatterns = [ path('admin/', admin.site.urls), path('',include(router.urls)), path('api-auth/',include('rest_framework.urls',namespace='rest_framework')), ]
troubleshooting
应该是另外一个例子
这种接口可能和得少 不过学习还是有用的 note
- on urls.py
from django.urls import path, include
那个views_api 我放到views on apps(django_web)