专栏首页Opensource翻译专栏如何用 Django 编写 Python web API【Programming(Python)】

如何用 Django 编写 Python web API【Programming(Python)】

Django是Python API开发中最受欢迎的框架之一。 在此快速教程中学习如何使用它。

图片来源:WOCinTech Chat. Modified by Opensource.com. CC BY-SA 4.0

Django是用于衡量所有其他框架的综合Web框架。 Django是Python API开发中最受欢迎的名称之一,自2005年成立以来,其知名度就迅速提高。

Django由Django软件基金会(Django Software Foundation)维护,并获得了社区的大力支持,在全球拥有11,600多个成员。 在Stack Overflow上,Django大约有191,000个带标签的问题。 Spotify,YouTube和Instagram等网站都依赖Django进行应用程序和数据管理。

本文演示了一个简单的API,可以使用HTTP协议的GET方法从服务器获取数据。

建立一个项目

首先,为您的Django应用程序创建一个结构; 您可以在系统上的任何位置执行此操作:

 $ mkdir myproject
 $ cd myproject

然后,创建一个虚拟环境以在项目​​目录中本地隔离软件包依赖项:

 $ python3 -m venv env
 $ source env / bin / activate

在Windows上,使用命令env \ Scripts \ activate激活Python虚拟环境。

安装Django和Django REST框架

接下来,为Django和Django REST安装Python模块:

 $ pip3 install django
 $ pip3 install djangorestframework

实例化一个新的Django项目

既然您已经为应用程序提供了工作环境,那么您必须实例化一个新的Django项目。 与像Flask这样的轻量级框架不同,Django在此过程中包含专用命令(请注意第一个命令中的结尾.字符)

 $ django-admin startproject tutorial .
 $ cd tutorial
 $ django-admin startapp quickstart

Django使用数据库作为其后端,因此您应该在开始开发之前同步数据库。 可以使用在运行django-admin命令时创建的manage.py脚本来管理数据库。 由于您当前位于tutorial目录中,因此请使用../符号来运行脚本,该脚本位于以下目录中:

 $ python3 ../manage.py makemigrations
 No changes detected
 $ python4 ../manage.py migrate
 Operations to perform:
   Apply all migrations: admin, auth, contenttypes, sessions
 Running migrations:
   Applying contenttypes.0001_initial... OK
   Applying auth.0001_initial... OK
   Applying admin.0001_initial... OK
   Applying admin.0002_logentry_remove_auto_add... OK
   Applying admin.0003_logentry_add_action_flag_choices... OK
   Applying contenttypes.0002_remove_content_type_name... OK
   Applying auth.0002_alter_permission_name_max_length... OK
   Applying auth.0003_alter_user_email_max_length... OK
   Applying auth.0004_alter_user_username_opts... OK
   Applying auth.0005_alter_user_last_login_null... OK
   Applying auth.0006_require_contenttypes_0002... OK
   Applying auth.0007_alter_validators_add_error_messages... OK
   Applying auth.0008_alter_user_username_max_length... OK
   Applying auth.0009_alter_user_last_name_max_length... OK
   Applying auth.0010_alter_group_name_max_length... OK
   Applying auth.0011_update_proxy_permissions... OK
   Applying sessions.0001_initial... OK

在Django中创建用户

使用示例密码password123创建一个名为admin的初始用户:

 $ python3 ../manage.py createsuperuser \
   --email admin@example.com \
   --username admin

提示时创建一个密码。

在Django中实现序列化器和视图

为了使Django能够将信息传递给HTTP GET请求,必须将信息对象转换为有效的响应数据。 Django为此实现了序列化器。

在您的项目中,通过创建一个名为 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']

Django中的视图是一个接受Web请求并返回Web响应的函数。 响应可以是HTML,或者是HTTP重定向,或者是HTTP错误,JSON或XML文档,图像或TAR文件,或者可以从Internet获得的任何其他内容。 要创建视图,请打开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  allows users to be viewed or edited.
     """
     queryset = User.objects.all().order_by('-date_joined')
     serializer_class = UserSerializer
 
 class GroupViewSet(viewsets.ModelViewSet):
  """
     API endpoint  allows groups to be viewed or edited.
     """
     queryset = Group.objects.all()
     serializer_class = GroupSerializer

使用 Django 生成 URL

现在,您可以生成URL,以便人们可以访问您刚起步的API。 在文本编辑器中打开urls.py ,然后用以下代码替换默认的示例代码:

 from django.urls import include, path
 from rest_framework import routers
 from tutorial.quickstart import views
 
 router = routers.DefaultRouter()
 router.register(r'users', views.UserViewSet)
 router.register(r'groups', views.GroupViewSet)
 
 # Use automatic URL routing
 # Can also include login URLs for the browsable API
 urlpatterns = [
     path('', include(router.urls)),
     path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
 ]

调整您的Django项目设置

这个示例项目的设置模块存储在 tutorial / settings.py 中,所以在文本编辑器中打开它,并在 INSTALLED apps 列表的末尾添加 rest 框架:

 INSTALLED_APPS = [
     ...
  'rest_framework',
 ]

测试你的 Django API

现在,您可以测试构建的API。 首先,从命令行启动内置服务器:

$ python3 manage.py runserver

您可以使用curl导航至URL http://localhost:8000/users来访问您的API:

或使用Firefox或其它开源Web浏览器

有关使用Django和Python的RESTful API的更多深入知识,请参阅Django文档

为什么要使用Django?

Django的主要优点:

  1. Django社区的规模正在不断扩大,因此即使在一个复杂的项目上,您也有大量的指导资源。
  2. 默认包括模板,路由,表单,身份验证和管理工具等功能。您不必寻找外部工具,也不必担心第三方工具会引入兼容性问题。
  3. 用户,循环和条件的简单构造使您可以专注于编写代码。
  4. 这是一个成熟且经过优化的框架,非常快速且可靠。

Django的主要缺点是:

  1. Django很复杂!从开发人员的角度来看,Django可能比简单的框架更难学。
  2. Django周围有一个很大的生态系统。一旦您熟悉Django,这会很棒,但是当您仍然学习时,它可能会令人不知所措。

Django是您的应用程序或API的绝佳选择。下载它,熟悉它,然后开始开发一个了不起的项目!

原文链接:https://opensource.com/article/19/11/python-web-api-django

原文作者:Rachel Waston

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 通过构建扫雷游戏来磨练高级 Bash 技能【Programming】

    我不是教授编程的专家,但是当我想要在某件事情上做得更好时,我会尝试找到一种方法来享受它。 例如,当我想更好地使用 shell 脚本时,我会决定在 Bash 中编...

    Potato
  • 如何在Windows上安装Python【Programming(Python)】

    所以你想学习编程吗?Python是最常见的语言之一,它以面向对象的结构和简单的语法的独特结合而流行。Python还是一种解释型语言,这意味着您无需学习如何将代码...

    Potato
  • 十二种学习Python的方法【Programming】

    Python 是世界上最流行的编程语言之一。 它受到了世界各地开发者和制造商的欢迎。 大多数 Linux 和 MacOS 计算机都预装了 Python 版本,现...

    Potato
  • 编写第一个 django 应用

    如果这是你第一次使用 Django 的话,你需要一些初始化设置。也就是说,你需要用一些自动生成的代码配置一个 Django project —— 即一个 Dja...

    公众号---人生代码
  • Python Web 学习资料汇总

    image Test-Driven Development with Python

    马哥Python
  • Django是否太重了

    接触Django差不多两年了,从一开始转到python就开始用Django做项目,到现在依然是在Django上开发CMS。Django算是个重量级框架吗?我在思...

    the5fire
  • 无痛使用 Django+xAdmin+MongoDB

    前几天开始自己在做些日志的分析的小玩具,要分析手搜的用户访问情况,工具很简单,处理逻辑也很简单——从kafka拿nginx日志,然后处理完保存的数据库中,然后以...

    the5fire
  • Django入门笔记3

    2、了解Bootstrap以及Bootstrap的栅格系统(www.bootcss.com)

    用户6367961
  • 《Django企业开发实战》FAQ - 持续更新

    单纯的学习 Django 提供的功能的话,看文档就够了,前提是你英文阅读还行,不过很多「残卷」的中文翻译看起来也不太省时间。当然也有人把 Django 文档做了...

    the5fire
  • Django 1.6.0 正式发布,大幅改进事务处理

    Django 项目是一个定制框架,它源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心组件有:

    Hongten

扫码关注云+社区

领取腾讯云代金券