Django是最流行的PythonAPI开发框架之一。在本教程中,我们将学习如何使用它。所有DjangoWeb框架中最全面的,也是最受欢迎的框架之一。自2005年以来,它的受欢迎程度显着增长。Django由Django软件基金会维护,并拥有一个强大的社区,在全球拥有超过11,600名成员。在StackOverflow上,大约有191,000个问题被标记为Django。Spotify、YouTube和Instagram等使用Django构建应用程序和数据管理。本文演示了一个简单的API,通过它您可以使用HTTP协议的GET方法从服务器获取数据。构建项目首先,为您的Django应用程序创建一个目录结构,您可以在系统的任何位置创建该目录结构:$mkdirmyproject$cdmyproject然后,在项目目录中创建一个虚拟环境以隔离本地包依赖项:$python3-mvenvenv$sourceenv/bin/activate在Windows上,使用命令env\Scripts\activate激活虚拟环境。安装Django和DjangoREST框架然后,安装Django和DjangoREST模块:$pip3installdjango$pip3installdjangorestframework实例化一个新的Django项目现在您已经为您的应用程序创建了一个工作环境,您必须实例化一个新的Django项目。与Flask等微框架不同,Django有专门的命令来创建它(注意第一个命令后的.字符)。$django-adminstartprojecttutorial.$cdtutorial$django-adminstartappquickstartDjango使用数据库来管理后台,所以在开始开发前需要同步数据库,数据库可以通过manage.py脚本来管理,该脚本是在开发之后创建的您运行在命令时创建的django-admin。因为你现在在教程目录,所以使用../号来运行脚本,它位于上一层目录:$python3../manage.pymakemigrationsNochangesdetected$python4../manage.pymigrateOperationstoperform:Applyallmigrations:admin,auth,contenttypes,sessionsRunningmigrations:Applyingcontenttypes.0001_initial...OK应用auth.0001_initial...OK应用admin.0001_initial...OK应用admin.0002_logentry_remove_auto_add...OK应用admin.0003_logentry_add_action_flag_choices...OK正在应用contenttypes.0002_remove_content_type_name...好正在应用auth.0002_alter_permission_name_max_length...好正在应用auth.0003_alter_user_email_max_length...好正在应用auth.0004_alter_user_username_opts...好正在应用auth.0005_alter_user_last_login_null...好正在应用auth.0003_alter_user_email_max_length...好正在应用auth.0005_alter_user_last_login_null_0.0007_alter_validators_add_error_messages...确定应用auth.0008_alter_user_username_max_length...确定应用auth.0009_alter_user_last_name_max_length...确定应用auth.0010_alter_group_name_max_length...OK应用auth.0011_update_proxy_permissions...OK应用sessions.0001_initial...OK在Django中创建一个用户创建一个名为admin的初始用户,并使用示例密码password123:$python3../manage。pycreatesuperuser\--emailadmin@example.com\--usernameadmin出现提示时创建密码在Django中实现序列化和视图为了让Django将信息传递给HTTPGET请求,信息对象必须转换为有效的响应数据。Django为此目的实现了“序列化类”序列化器。在你的项目中,创建一个名为quickstart/serializers.py的新模块,用它来定义一些序列化器,该模块将用于数据显示:HyperlinkedModelSerializer):classMeta:model=Userfields=['url','username','email','groups']classGroupSerializer(serializers.HyperlinkedModelSerializer):classMeta:模型=Groupfields=['url','name']Django中的视图是一个接受网络请求并返回网络响应的函数。响应可以是HTML、HTTP重定向、HTTP错误、JSON或XML文档、图像或TAR文件,或从Internet获得的任何其他内容。要创建视图,请打开quickstart/views.py并输入以下代码。这个文件已经存在并且包含一些示例文本,保留它并在文件中添加以下代码:ModelViewSet):"""API允许查看或编辑用户"""queryset=User.objects.all().order_by('-date_joined')serializer_class=UserSerializerclassGroupViewSet(viewsets.ModelViewSet):"""API允许查看或编辑group"""queryset=Group.objects.all()serializer_class=GroupSerializer使用Django生成URL现在您可以生成URL,以便人们可以访问您刚起步的API。在文本编辑器中打开urls.py并将默认示例代码替换为以下内容:fromdjango.urlsimportinclude,pathfromrest_frameworkimportroutersfromtutorial.quickstartimportviewsrouter=routers.DefaultRouter()router.register(r'users',views.UserViewSet)router.register(r'groups',views.GroupViewSet)#使用自动路由URL#和登录URLurlpatterns=[path('',include(router.urls)),path('api-auth/',include('rest_framework.urls',namespace='rest_framework'))]AdjustingyourDjangoprojectsettings此示例项目的设置模块存储在tutorial/settings.py中,因此在文本编辑器中打开它,并在添加rest_framework到INSTALLED_APPS列表的末尾:INSTALLED_APPS=[...'rest_framework',]测试DjangoAPI现在您可以测试构建的API。首先,从命令行启动内置服务器:$python3manage.pyrunserver您可以通过使用curl导航到URLhttp://localhost:8000/users来访问API:$curl--gethttp://localhost:8000/users/?format=json[{"url":"http://localhost:8000/users/1/?format=json","username":"admin","email":"admin@example.com","groups":[]}]使用Firefox或您选择的开源浏览器:一个简单的DjangoAPI要更深入地了解使用Django和Python的RESTfulAPI,请参阅出色的Django文档。为什么要使用Djago?Django的主要优点:Django社区的规模在不断扩大,所以即使你从事复杂的项目,也会有大量的指导资源。默认包括模板、路由、表单、身份验证和管理工具等功能。您不必寻找外部工具,也不必担心第三方工具引入的兼容性问题。用户、循环和条件的简单结构让您可以专注于编写代码。它是一个成熟和优化的框架,非常快速和可靠。Django的主要缺点:Django很复杂!从开发人员的角度来看,它可能比简单的框架更难学习。Django有一个庞大的生态系统。一旦你习惯了它就很棒,但是当你深入其中时它会让人感到不知所措。Django是您的应用程序或API的绝佳选择。下载并熟悉它,开始开发一个迷人的项目!
