首页 > 编程语言 >Python面试题:如何使用Django Rest Framework构建RESTful API

Python面试题:如何使用Django Rest Framework构建RESTful API

时间:2024-07-30 20:24:37浏览次数:18  
标签:面试题 users Python py Django Framework API myapp import

使用 Django Rest Framework (DRF) 构建 RESTful API 是一个常见且强大的方法。以下是一个详细的指南,帮助你从头开始创建一个基本的 Django 项目,并使用 DRF 构建一个 RESTful API。

环境准备

  1. 安装 Django 和 Django Rest Framework:

    pip install django djangorestframework
    
  2. 创建 Django 项目:

    django-admin startproject myproject
    cd myproject
    
  3. 创建应用:

    python manage.py startapp myapp
    

配置 Django 项目

  1. 添加应用到 INSTALLED_APPS:
    myproject/settings.py 中,添加 rest_framework 和你的应用 myapp
    INSTALLED_APPS = [
        ...
        'rest_framework',
        'myapp',
    ]
    

创建模型

  1. 定义模型:
    myapp/models.py 中定义你的模型。例如,一个简单的用户模型:

    from django.db import models
    
    class User(models.Model):
        name = models.CharField(max_length=100)
        email = models.EmailField(unique=True)
    
        def __str__(self):
            return self.name
    
  2. 迁移数据库:

    python manage.py makemigrations
    python manage.py migrate
    

创建序列化器

  1. 定义序列化器:
    myapp/serializers.py 中定义你的序列化器:
    from rest_framework import serializers
    from .models import User
    
    class UserSerializer(serializers.ModelSerializer):
        class Meta:
            model = User
            fields = ['id', 'name', 'email']
    

创建视图和 URL

  1. 定义视图:
    myapp/views.py 中定义你的视图:

    from rest_framework import generics
    from .models import User
    from .serializers import UserSerializer
    
    class UserListCreate(generics.ListCreateAPIView):
        queryset = User.objects.all()
        serializer_class = UserSerializer
    
    class UserRetrieveUpdateDestroy(generics.RetrieveUpdateDestroyAPIView):
        queryset = User.objects.all()
        serializer_class = UserSerializer
    
  2. 配置 URL:
    myapp/urls.py 中配置 URL 路由:

    from django.urls import path
    from .views import UserListCreate, UserRetrieveUpdateDestroy
    
    urlpatterns = [
        path('users/', UserListCreate.as_view(), name='user-list-create'),
        path('users/<int:pk>/', UserRetrieveUpdateDestroy.as_view(), name='user-detail'),
    ]
    
  3. 包括应用的 URL 到主 URL 配置:
    myproject/urls.py 中包括应用的 URL:

    from django.contrib import admin
    from django.urls import path, include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('api/', include('myapp.urls')),
    ]
    

运行服务器

  1. 启动开发服务器:

    python manage.py runserver
    
  2. 测试 API:
    你现在可以使用浏览器、Postman 或 curl 来测试你的 API。例如:

    • 获取用户列表: GET http://127.0.0.1:8000/api/users/
    • 创建新用户: POST http://127.0.0.1:8000/api/users/,并在请求体中提供用户数据(JSON 格式)
    • 获取单个用户: GET http://127.0.0.1:8000/api/users/1/
    • 更新用户: PUT http://127.0.0.1:8000/api/users/1/,并在请求体中提供更新的数据(JSON 格式)
    • 删除用户: DELETE http://127.0.0.1:8000/api/users/1/

总结

通过上述步骤,你可以使用 Django 和 Django Rest Framework 构建一个简单但功能强大的 RESTful API。这是一个基本的例子,你可以根据需要添加更多的功能,例如认证、权限、分页等。Django Rest Framework 提供了许多内置功能和工具,帮助你快速构建和扩展你的 API。

标签:面试题,users,Python,py,Django,Framework,API,myapp,import
From: https://blog.csdn.net/bigorsmallorlarge/article/details/140805946

相关文章

  • python高性能计算:cython入门代码
    三种实现的对比:(1)纯pythonx.pydefis_prime(num):forjinrange(2,num):if(num%j)==0:returnFalsereturnTrueimporttimea=time.time()foriinrange(10,100000):is_prime(i)b=time.time()print(b-a)(2)x2.py......
  • 【第二节】python编程基础语法
    目录一、运算符介绍1.1算术运算符1.2比较运算符1.3赋值运算符1.4位运算符1.5逻辑运算符1.6成员运算符1.7身份运算符二、python运算符优先级三、三大流程结构四、列表五、元组六、字典一、运算符介绍1.1算术运算符1.2比较运算符1.3赋值运算符......
  • 基于python的百度迁徙迁入、迁出数据分析(四)
    这篇文章是对上篇文章的可获取数据的时间区间的修正,依然通过开发者模式找寻相关数据源,我直接把数据url贴在这里,可以发现里面包含了相对明面上看不到的数据包括,行政区id、春运迁徙数据等:qianxi.cdn.bcebos.com/app/index.js?9bf6150c2c2807aeaddb上篇文章在这里,有兴趣的可以连......
  • golang面试题:json包变量不加tag会怎么样?
    问题json包里使用的时候,结构体里的变量不加tag能不能正常转成json里的字段?怎么答如果变量首字母小写,则为private。无论如何不能转,因为取不到反射信息。如果变量首字母大写,则为public。不加tag,可以正常转为json里的字段,json内字段名跟结构体内字段原名一致。加了tag,从str......
  • python高性能计算:cython使用openmp并行 —— 报错:undefined symbol: omp_get_thread_n
    test.pyx文件:fromcython.parallelcimportparallelfromopenmpcimportomp_get_thread_numcpdefvoidlong_running_task1()noexceptnogil:whileTrue:passcpdefvoidlong_running_task2()noexceptnogil:whileTrue:passdefdo......
  • 使用Python Paramiko创建文件目录并上传文件的终极指南
    哈喽,大家好,我是木头左!前言:为何选择Paramiko?在网络运维和自动化领域,SSH(SecureShell)协议是连接和管理远程服务器的常用手段。而Paramiko是一个用于进行SSH2会话的Python库,它支持加密、认证和文件传输等功能。使用Paramiko,可以方便地实现远程命令执行、文件上传下载等操作。准......
  • python_爬虫基础
    python爬虫基础1、初识爬虫1.rebots协议网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,但它仅仅是互联网中的约定而已,可以不用遵守。例如:https://www.taobao.com/robots.txt2.谷歌浏览器插件●XPathHelper●WebScraper●ToggleJavaScript●User-......
  • Python - Creating Managed Attributes using properties
    CreatingManagedAttributesusingpropertiesPropertiescanbeusedtocreatedataattributeswithspecialfunctionality.Ifyouwantsomeextrafunctionality(liketypechecking,datavalidationortransformation)whilegettingorsettingadataattribut......
  • Python - Static Methods
    Sometimeswehavetowritemethodsthatarerelatedtotheclassbutdonotneedanyaccesstoinstanceorclassdataforperformingtheirwork.Thesemethodscouldbesomehelperorutilitymethodsthatareusedinsidetheclassbuttheycanperformthei......
  • python中列表的学习
    列表目录列表列表的定义创建列表列表的索引列表的切片内置函数列表的遍历列表的常用方法(变量.方法名())列表的定义List(列表)是Python中使用最频繁的数据类型,在其他语言中通常叫做数组专门用于存储一串信息列表用[]定义,数据之间使用﹐分隔列表的索引从О开始索引就是数据在列......