DDR爱好者之家 Design By 杰米

Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 Web 应用程序框架。它是Python API开发中最受欢迎的名称之一,自2005年成立以来,其知名度迅速提升。

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

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

建立一个项目

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

$ mkdir myproject
$ cd myproject

然后创建一个虚拟环境,它能够使我们根据需要安装一些特定的包来跑通我们的程序,并且不影响当前环境,用完退出虚拟环境即可。

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

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

安装Django和Django REST框架

接下来,安装Django和Django REST框架模块:

$ 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中,因此请在文本编辑器中将其打开,然后将rest_framework添加到INSTALLED_APPS列表的末尾:

INSTALLED_APPS = [
  ...
  'rest_framework',
]

测试您的Django API

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

$ python3 manage.py runserver

您可以使用curl获取URL http:// localhost:8000 / users来访问您的API:

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

或使用Firefox浏览器等:

有关使用Django和Python的RESTful API的更深入的知识,请参阅Django文档(https://docs.djangoproject.com/en/2.2/)。

DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。