Django是Python API开发中最受欢迎的框架之一。 在此快速教程中学习如何使用它。
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安装Python模块:
$ pip3 install django
$ pip3 install djangorestframework
既然您已经为应用程序提供了工作环境,那么您必须实例化一个新的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
使用示例密码password123创建一个名为admin的初始用户:
$ python3 ../manage.py createsuperuser \
--email admin@example.com \
--username admin
提示时创建一个密码。
为了使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
现在,您可以生成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'))
]
这个示例项目的设置模块存储在 tutorial / settings.py 中,所以在文本编辑器中打开它,并在 INSTALLED apps 列表的末尾添加 rest 框架:
INSTALLED_APPS = [
...
'rest_framework',
]
现在,您可以测试构建的API。 首先,从命令行启动内置服务器:
$ python3 manage.py runserver
您可以使用curl导航至URL http://localhost:8000/users来访问您的API:
或使用Firefox或其它开源Web浏览器 :
有关使用Django和Python的RESTful API的更多深入知识,请参阅Django文档 。
Django的主要优点:
Django的主要缺点是:
Django是您的应用程序或API的绝佳选择。下载它,熟悉它,然后开始开发一个了不起的项目!
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。