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
在项目下创建api
和rest_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/
我们可以看到如下页面:
Tips:也可以自定义host
和port
,如下所示:
python manage.py runserver 127.0.0.1:8001
登录超级管理员账户
我们再输入地址:http://127.0.0.1:8000/admin
即可进入到登录超级管理员账户界面:
登录我们创建的账户,可以看到如下界面:
数据序列化
Serializers用于定义API的表现形式,如返回哪些字段、返回怎样的格式等。这里序列化Django自带的User
和Group
。创建数据序列化,在api应用下创建serializers.py
文件。
序列化代码如下:
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中会定义相应的规则到ViewSets
。ViewSets
则通过serializer_class
找到对应的Serializers
。
这里将User
和Group
的所有对象赋予queryset
,并返回这些值。在UserSerializer
和GroupSerializer
中定义要返回的字段。
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主页,如下所示:
创建数据
点击主页右上角的Log in
登录超级管理员账户,然后分别创建Group
和User
数据。
Tips: Vary: Accept
标头可告诉代理服务器缓存两种版本的资源:压缩和非压缩,这有助于避免一些公共代理不能正确地检测Content-Encoding标头的问题。
更多干货
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
关注公众号,更多干货秒得到