Bootstrap

django安装_Restful接口开发与测试—Django安装

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版本,

pip install django

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

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

C:\Users\Shuqing>django-admin

Type 'django-admin help ' 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数据源的序列化。

  • 丰富的文档以及良好的社区支持。

安装
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应用

C:\Users\Shuqing>d:
#创建一个新的项目
D:\>django-admin startproject django_restful

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

D:\>cd django_restful

D:\django_restful>python manage.py startapp api

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

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设置。在该文件末尾添加如下内容:

REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
)
}
数据库迁移

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

D:\django_restful>python 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 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

D:\django_rest>python manage.py createsuperuser
Username (leave blank to use 'shuqing'): 51zxw
Email address: [email protected]
Password:
Password (again):
Superuser created successfully.
启动Server

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

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/ 我们可以看到如下页面:

c11bbaee8c6f08026e7e814ed4853277.png

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

python manage.py runserver 127.0.0.1:8001
登录超级管理员账户

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

0c6012f9b2912e2465e82083dee15880.png

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

d8f11214980426422d5e1a2b7c95d9c1.png

数据序列化

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

5ed2fd0a75fbad65ea513f2ee0e7de9e.png

序列化代码如下:

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')
创建视图

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

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

views.py

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的路由配置。

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路由配置如下

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主页,如下所示:

cf898768e5026f581b51baa7ad557c5e.png

创建数据

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

94aaf42a8c98c0da3a8b7d51cd2209a1.png

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

f2b029985c7a5a31df54f062bcca4954.png

更多干货

  • Python接口自动化——Requests

  • Python接口自动化——Requests基础功能

  • Jmeter+Ant+Jenkins接口自动化测试平台

  • Cookie管理与测试报告

  • Jmeter用例数据分离

  • Jmeter CSV文件管理与正则匹配

  • Jmeter变量设置

  • Jmeter简介与安装

  • Postman批量执行与集成Jenkins

  • Mac 环境Appium自动化测试环境搭建

  • 众里寻他千百度—Appium Android 元素定位方式

  • Android自动化测试设备弹窗处理

  • Appium iOS 元素定位与操作

  • Ubuntu+Docker+STF环境搭建

  • Anyproxy抓包代理安装使用

  • Python自动化日志收集

  • Android 测试工具——Monkeyrunner API

925d63df4d05c2ad64a78faee5557b8e.png

关注公众号,更多干货秒得到

;