如何借助Django来编写一个Python Web API
Rachel Waston   Linux中华   2020-01-11

如何借助Django来编写一个Python Web API

Django 是 Python API 付出中最盛行的框架之一,在这个教程中,咱们来学习如何运用它。

Django 整整 Web 框架中最完善的,也是最受欢迎的一个。自 2005 年以来,他流行度大幅上升。

Django 是由 Django 硬件基金会维护,并且获得了站区的大力支持,在中外拥有超过 11,600 红成员。在 Stack Overflow 上,约有 191,000 个带 Django 标签的题材。Spotify、YouTube 和 Instagram 等都使用 Django 来构建应用程序和数据管理。

本文演示了一番简单的 API,穿过它可以运用 HTTP 协和的 GET 办法来辅助服务器获取数据。

构建一个项目

第一,为你的 Django 使用程序创建一个目录结构,你可以在系统之其他位置创建:

     
  1. $ mkdir myproject
  2. $ cd myproject

下一场,在档次目录中创造一个虚拟环境来隔离本地包依赖关系:

     
  1. $ python3 -m venv env
  2. $ source env/bin/activate

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

安装 Django 和 Django REST framework

下一场,安装 Django 和 Django REST 模块:

     
  1. $ pip3 install django
  2. $ pip3 install djangorestframework

老化一个新的 Django 品种

如今你的使用程序已经有了一番工作条件,你不能不实例化一个新的 Django 品种。与 Flask 这样微框架不同之是,Django 有专门的指令来创造(瞩目第一枝命令后的 . 字符)。

     
  1. $ django-admin startproject tutorial .
  2. $ cd tutorial
  3. $ django-admin startapp quickstart

Django 采用必发娱乐登录来管理下端,故此你应该在初始开发之前同步必发娱乐登录,必发娱乐登录可以通过 manage.py 剧本管理,他是在你运行 django-admin 命令时创建的。因为你现在在 tutorial 目录,故此采取 ../ 标志来运转脚本,他位于上一层目录:

     
  1. $ python3 ../manage.py makemigrations
  2. No changes detected
  3. $ python4 ../manage.py migrate
  4. Operations to perform:
  5. Apply all migrations: admin, auth, contenttypes, sessions
  6. Running migrations:
  7. Applying contenttypes.0001_initial... OK
  8. Applying auth.0001_initial... OK
  9. Applying admin.0001_initial... OK
  10. Applying admin.0002_logentry_remove_auto_add... OK
  11. Applying admin.0003_logentry_add_action_flag_choices... OK
  12. Applying contenttypes.0002_remove_content_type_name... OK
  13. Applying auth.0002_alter_permission_name_max_length... OK
  14. Applying auth.0003_alter_user_email_max_length... OK
  15. Applying auth.0004_alter_user_username_opts... OK
  16. Applying auth.0005_alter_user_last_login_null... OK
  17. Applying auth.0006_require_contenttypes_0002... OK
  18. Applying auth.0007_alter_validators_add_error_messages... OK
  19. Applying auth.0008_alter_user_username_max_length... OK
  20. Applying auth.0009_alter_user_last_name_max_length... OK
  21. Applying auth.0010_alter_group_name_max_length... OK
  22. Applying auth.0011_update_proxy_permissions... OK
  23. Applying sessions.0001_initial... OK

在 Django 官方创造用户

创造一个名为 admin,示例密码为 password123 的初步用户:

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

在指导时创建密码。

在 Django 官方贯彻序列化和视图

为了使 Django 能够将信息传递给 HTTP GET 呼吁,必须将信息对象转化为有效的呼唤数据。Django 故此实现了“列化类” serializers

在你的品种中,创造一个名为 quickstart/serializers.py 的新模块,采用它来定义一些队化器,模块将用于数据展示:

     
  1. from django.contrib.auth.models import User, Group
  2. from rest_framework import serializers
  3.  
  4. class UserSerializer(serializers.HyperlinkedModelSerializer):
  5. class Meta:
  6. model = User
  7. fields = ['url', 'username', 'email', 'groups']
  8.  
  9. class GroupSerializer(serializers.HyperlinkedModelSerializer):
  10. class Meta:
  11. model = Group
  12. fields = ['url', 'name']

Django 中的挂图是一番接受 Web 呼吁并返回 Web 呼唤的函数。呼唤可以是 HTML、HTTP 重定向、HTTP 错误、JSON 或 XML 文档、图像或 TAR 文件,或者可以是副 Internet 拥有的其他其他内容。要创造视图,开拓 quickstart/views.py 并纳入以下代码。该文件已经存在,并且其中包含一些示例文本,保留这些文本并将以下代码添加到文件中:

     
  1. from django.contrib.auth.models import User, Group
  2. from rest_framework import viewsets
  3. from tutorial.quickstart.serializers import UserSerializer, GroupSerializer
  4.  
  5. class UserViewSet(viewsets.ModelViewSet):
  6. """
  7. API 兴许查看或编辑用户
  8. """
  9. queryset = User.objects.all().order_by('-date_joined')
  10. serializer_class = UserSerializer
  11.  
  12. class GroupViewSet(viewsets.ModelViewSet):
  13. """
  14. API 兴许查看或编辑组
  15. """
  16. queryset = Group.objects.all()
  17. serializer_class = GroupSerializer

采用 Django 浮动 URL

如今,你可以变动 URL 以便人们得以访问你刚启动的 API。在文件编辑器中开拓 urls.py 并将默认示例代码替换为以下代码:

     
  1. from django.urls import include, path
  2. from rest_framework import routers
  3. from tutorial.quickstart import views
  4.  
  5. router = routers.DefaultRouter()
  6. router.register(r'users', views.UserViewSet)
  7. router.register(r'groups', views.GroupViewSet)
  8.  
  9. # 采用自动路由 URL
  10. # 还有登录 URL
  11. urlpatterns = [
  12. path('', include(router.urls)),
  13. path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
  14. ]

调整你的 Django 品种设置

其一示例项目的安装模块存储在 tutorial/settings.py 官方,故此在文件编辑器中将他开拓,下一场在 INSTALLED_APPS 列表的最后添加 rest_framework

     
  1. INSTALLED_APPS = [
  2. ...
  3. 'rest_framework',
  4. ]

高考 Django API

如今,你可以测试构建的 API。第一,副命令行启动内置服务器:

     
  1. $ python3 manage.py runserver

你可以通过使用 curl 导航至 URL http://localhost:8000/users 寻访问 API:

     
  1. $ curl --get http://localhost:8000/users/?format=json
  2. [{"url":"http://localhost:8000/users/1/?format=json","username":"admin","email":"admin@example.com","groups":[]}]

采用 Firefox 或你选择的开源浏览器

 

一度简单的 Django API

有关使用 Django 和 Python 的 RESTful API 的更多深入知识,参考出色之 Django 文档

为什么要使用 Djago?

Django 的首要优点:

  1. Django 镇区的局面正在不断壮大,故此即使你做一个复杂项目,也会有恢宏之提示资源。
  2. 默认包含模板、路由、表单、身份验证和保管工具等效果,你不要寻找外部工具,也不必担心第三方工具会引入兼容性问题。
  3. 他家、循环和规范的简短结构使你可以专注于编写代码。
  4. 这是一番成熟且经过优化的框架,他特殊迅速且可靠。

Django 的首要缺点:

  1. Django 很复杂!副开发人员视角的力度来看,他可能比简单的框架更困难学。
  2. Django 有一度很大的自然环境体系。一旦你熟悉它,这会很棒,但是当你深入学习时,他可能会令人觉得无所适从。

对你的使用程序或 API 来说,Django 是绝佳选择。载入并熟悉它,起来开发一个憨态可掬的品种! 

【义务编辑: 庞桂玉 TEL:(010)68476606】
分享到朋友圈 分享到微博
  • Django
  • Python
  • Web API
  • 相关推荐

    新手必看:Python 3.8六大新功能

    2020-01-31 18:40:57

    你可能不知晓的 Python 技术

    2020-01-29 19:40:36

    关于Python列表操作,比起广泛的10个问题

    2020-01-29 19:13:25

    Copyright © 2005-2020 51CTO.COM 必发娱乐登入
    情节话题
    必发娱乐登入 移步 传感器 系统 安全 网络 必发娱乐登录 虚拟化 付出
    热门产品
    51CTO必发娱乐登录 51CTO高招 移步开发者服务联盟网+ 51CTO博客 WOT碰头会