首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Restful接口开发与测试—Django安装

Restful接口开发与测试—Django安装

作者头像
清风穆云
发布2021-08-09 11:24:57
发布2021-08-09 11:24:57
2.1K00
代码可运行
举报
文章被收录于专栏:QA一隅QA一隅
运行总次数:0
代码可运行

Django简介

Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。

  • 官网地址:https://www.djangoproject.com
  • 官方文档(中文):https://docs.djangoproject.com/zh-hans/2.0/

Tips:Python的Web开发框架除了Django,还有Flask和Tornado等。

Django安装

输入如下命令即可安装Django,注意需要提前配置好Python环境,这里选择的django版本是2.0.3版本,

代码语言:javascript
代码运行次数:0
运行
复制
pip install django

安装校验:在Windows命令提示符下输入django-admin命令回车。

提示如下内容则说明安装成功

代码语言:javascript
代码运行次数:0
运行
复制
C:\Users\Shuqing>django-admin

Type 'django-admin help <subcommand>' for help on a specific subcommand.

Available subcommands:

[django]
    check
    compilemessages
    createcachetable
    dbshell
    diffsettings
    dumpdata
    flush
    inspectdb
    loaddata
    makemessages
    makemigrations
    migrate
    runserver
    sendtestemail
    shell
    showmigrations
    sqlflush
    sqlmigrate
    sqlsequencereset
    squashmigrations
    startapp
    startproject
    test
    testserver
Note that only Django core commands are listed as settings are not properly configured (error: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.)

Django REST Framework

简介

Django REST Framework,是一套基于Django的REST风格的框架。

官方主页:http://www.django-rest-framework.org

特点
  • 功能强大、灵活,可以帮助你快速开发Web API。
  • 支持认证策略,包括OAuth1和OAuth2。
  • 支持ORM(对象关系映射)和非ORM数据源的序列化。
  • 丰富的文档以及良好的社区支持。
安装
代码语言:javascript
代码运行次数:0
运行
复制
pip install djangorestframework #Django REST Framework
pip install markdown       # Markdown support for the browsable API.
pip install django-filter  # Filtering support

创建API

项目创建

当Django REST Framework安装好之后,创建一个新的项目django_restful,如下命令所示我是创建在D盘根目录。在项目下创建api应用

代码语言:javascript
代码运行次数:0
运行
复制
C:\Users\Shuqing>d:
#创建一个新的项目
D:\>django-admin startproject django_restful

进入项目django_restful创建api应用,创建完成之后可以看到项目文件夹下面多了一个api文件夹

代码语言:javascript
代码运行次数:0
运行
复制
D:\>cd django_restful

D:\django_restful>python manage.py startapp api

进入到D:\django_rest\django_restful目录,打开settings.py在项目下创建apirest_framework

代码语言:javascript
代码运行次数:0
运行
复制
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'api',

]

rest_framework权限配置

默认的权限策略可以设置在全局范围内,通过DEFAULT_PERMISSION_CLASSES设置。在该文件末尾添加如下内容:

代码语言:javascript
代码运行次数:0
运行
复制
REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    )
}
数据库迁移

然后通过命令migrate命令进行数据库迁移。

代码语言:javascript
代码运行次数:0
运行
复制
D:\django_restful>python manage.py migrate

执行之后看到如下提示说明迁移成功

代码语言:javascript
代码运行次数:0
运行
复制
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 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 sessions.0001_initial... OK

创建超级管理员

使用createsuperuser命令来创建超级管理员账户,密码至少8位数字和字母组合。如51zxw20182018

代码语言:javascript
代码运行次数:0
运行
复制
D:\django_rest>python manage.py createsuperuser
Username (leave blank to use 'shuqing'): 51zxw
Email address: 51zxw@163.com
Password:
Password (again):
Superuser created successfully.
启动Server

启动django,然后验证登录我们创建的超级管理员账户。

代码语言:javascript
代码运行次数:0
运行
复制
D:\django_rest>python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
July 20, 2018 - 16:01:39
Django version 2.0.7, using settings 'django_rest.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

启动成功之后,输入地址:http://127.0.0.1:8000/ 我们可以看到如下页面:

Tips:也可以自定义hostport,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
python manage.py runserver 127.0.0.1:8001
登录超级管理员账户

我们再输入地址:http://127.0.0.1:8000/admin 即可进入到登录超级管理员账户界面:

登录我们创建的账户,可以看到如下界面:

数据序列化

Serializers用于定义API的表现形式,如返回哪些字段、返回怎样的格式等。这里序列化Django自带的UserGroup。创建数据序列化,在api应用下创建serializers.py文件。

序列化代码如下:

serializers.py

代码语言:javascript
代码运行次数:0
运行
复制
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')
创建视图

视图用于如何向用户展示数据,展示哪些数据。比如用户查询User信息或查询Group信息,那么程序内部要定义好怎么去查询。在Django REST framework中,ViewSets用于定义视图的展现形式,例如返回哪些内容,需要做哪些权限处理。

打开api应用下的views.py文件,编写如下代码:

views.py

代码语言:javascript
代码运行次数:0
运行
复制
from django.shortcuts import render
from django.contrib.auth.models import User,Group
from rest_framework import viewsets
from api.serializers import UserSerializer,GroupSerializer

# Create your views here.
class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

class GroupViewSet(viewsets.ModelViewSet):
    queryset = Group.objects.all()
    serializer_class = GroupSerializer
    

在URL中会定义相应的规则到ViewSetsViewSets则通过serializer_class找到对应的Serializers

这里将UserGroup的所有对象赋予queryset,并返回这些值。在UserSerializerGroupSerializer中定义要返回的字段。

URL路由配置

打开.../django_rest/urls.py文件,添加api的路由配置。

代码语言:javascript
代码运行次数:0
运行
复制
from django.contrib import admin
from django.urls import path
from django.conf.urls import include
from rest_framework import routers
from api import views


router=routers.DefaultRouter()
router.register(r'users',views.UserViewSet)
router.register(r'groups',views.GroupViewSet)



urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include(router.urls)),
    path('api-auth/',include('rest_framework.urls',namespace='rest_framework')),
    
]

注意:Django1.0和2.0关于路由配置写法有一些区别,使用1.0路由配置如下

代码语言:javascript
代码运行次数:0
运行
复制
from django.conf.urls import url

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^',include(router.urls)),
    url(r'^api-auth/',include('rest_framework.urls',namespace='rest_framework')),
]
打开API主页

启动服务,然后在浏览器打开:http://127.0.0.1:8000/ 即可看到API主页,如下所示:

创建数据

点击主页右上角的Log in登录超级管理员账户,然后分别创建GroupUser数据。

Tips: Vary: Accept标头可告诉代理服务器缓存两种版本的资源:压缩和非压缩,这有助于避免一些公共代理不能正确地检测Content-Encoding标头的问题。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 QA一隅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Django简介
  • Django安装
  • Django REST Framework
    • 简介
    • 特点
    • 安装
  • 创建API
    • 项目创建
    • 数据库迁移
    • 创建超级管理员
    • 启动Server
    • 登录超级管理员账户
    • 数据序列化
    • 创建视图
    • URL路由配置
    • 打开API主页
    • 创建数据
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档