• rest-framwork官方文档教程(一)


    该项目是按照官网quickstart进行的,具体也可查看rest-framework官网:

    https://www.django-rest-framework.org/tutorial/quickstart/#

    一.安装依赖库

    此处请确认你的python版本,如果你使用的是python3,那么在pip的时候和进入python命令行的时候要使用pip3和python3的命令

    pip3 install django

    pip3 install djangorestframework

    二.创建项目

    (一)quickstart

    # 创建项目文件夹
    mkdir tutorial
    cd tutorial/
    # 创建一个django项目并创建一个应用
    django-admin startproject tutorial .
    (上一个命令中最后还有一个点别丢掉,否则创建的项目目录会多一层)
    django-admin startapp quickstart

    以上步骤完成后目录结构如下:

     

      在这里说一下project和app的关系。一个应用是完成某件事的一个web程序,比如一个博客系统等。而一个工程包含网站的一系列配置以及多个应用。一个工程可以包括多个应用,一个应用也可以存在于多个工程

    首次初始化你的数据库:

    cd ..
    python3 manage.py migrate

    此时显示:

    然后创建数据库初始化的用户名密码:

    python manage.py createsuperuser --email admin@example.com --username admin

    三.编写项目

    现在用ide打开刚才创建的工程,开始coding...

    1.序列化

    首先要定义一些序列化,所以来创建一些序列化的东西

    创建一个py文件,具体位置为:tutorial/quickstart/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')

     在这里我们使用超链接序列化器HyperlinkedModelSerializer,当然你也可以使用其他主键字段和其他各种关系,但Hyperlinked比较更restful化.

    序列化小知识:

    在程序运行的过程中,所有的变量都是在内存中,比如,定义一个dict:

    d = dict(name='Bob', age=20, score=88)

    可以随时修改变量,比如把name改成'Bill',但是一旦程序结束,变量所占用的内存就被操作系统全部回收。如果没有把修改后的'Bill'存储到磁盘上,下次重新运行程序,变量又被初始化为'Bob'

    我们把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。

    序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。

    反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。

     2.创建视图

    现在我们来创建视图,打开文件tutorial/quickstart/views.py

    from django.contrib.auth.models import User,Group
    from rest_framework import viewsets
    from tutorial.quickstart.serializers import UserSerializer,GroupSerializer
    
    class UserViewSet(viewsets.ModelViewSet):
        """
        API endpoint that allows users to be viewed or edited.
        """
        queryset = User.objects.all().order_by('-date_joined')
        serializer_class = UserSerializer
    
    class GroupViewSet(viewsets.ModelViewSet):
        """
        API endpoint that allows groups to be viewed or edited.
        """
        queryset = Group.objects.all()
        serializer_class = GroupSerializer

    与写多个视图相比,我们将具有常见行为的组成一个类叫做viewsets

    3.URLs

    接下来进行url的编辑,操作文件为:tutorial/urls.py

    from django.contrib import admin
    from django.urls import path
    from django.conf.urls import url,include
    from rest_framework import routers
    from tutorial.quickstart import views
    
    router=routers.DefaultRouter()
    #定义路由地址 router.register(r'users',views.GroupViewSet) router.register(r'groups',views.GroupViewSet)
    #注册新的路由地址 urlpatterns = [ path('admin/', admin.site.urls), url(r'^',include(router.urls)), url(r'^api-auth/',include('rest_framework.urls'),namespace='rest_framework') ]

    4.页码

    每个分页控制多少个返回对象,在tutorial/settings.py

    REST_FRAMEWORK = {
        'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
        'PAGE_SIZE': 10
    }
    

    5.settings

    在tutorial/settings.py里的INSTALLED_APPS中添加'rest_framework'

    到现在,我们的quickstart完成啦

    下面来进行一些调试

    6.调试接口

    输入的命令

    python3 manage.py runserver
    

      

    此时访问http://127.0.0.1:8000/,可以看到如下界面:

    访问http://127.0.0.1:8000/users/结果如下:

    到这里,我们就成功创建了一个django-rest项目啦~~~~~

  • 相关阅读:
    获取split分割的最后一个值
    django分页查询
    django中iframe请求报错的问题
    pandas.Series
    NumPy 切片和索引
    继承
    NumPy 从数值范围创建数组
    迭代器iter用法
    numpy.asarray
    NumPy 创建数组
  • 原文地址:https://www.cnblogs.com/panpan0301/p/10164928.html
Copyright © 2020-2023  润新知