django框架_图解django框架下简单接口的实现

新书

速递

吴老的java版《selenium webdriver 实战宝典》和python版《selenium Webdriver 3.0 自动化测试框架实战指南》出版了,代码拿来就能用。

文 |  夜鸣猪

如需源码请加吴老师微信索取:fosterwu

一、新建django项目及应用

1、打开pycharm,创建新项目books;

af59436d5c2a05cec3843d1902cb3533.png

2、在pycharm中安装django;

5b4ac6a1f687041221fceece6dba920d.png

3、进入Terminal,输入django-admin startproject books;

7f05ab9f9820801ca2256d97e65b4fc1.png

生成项目:

373b9770a81b03e2cba780add429f6a1.png

输入pythonmanage.py runserver,启动服务并点击网址,

0f37c8955a68a3cbc3ab6c650cc0e825.png

可以看到django默认启动页

99ff8d73abb076febbe0f81cfe387841.png

4、切换到manage.py的同级目录books下面;

94dda7ed86df38c8f157b2bf0d76ee3d.png

5、创建apis应用;

运行完pythonmanage.py startapp apis命令后可以看到应用结构:

251cf84c08913305f74a2f014dfdd14f.png

6、在./settings.py中注册刚创建的app,这里路径中的“.”代表项目books所在的路径,为整个项目的根目录,后面都用这种形势表示路径;

1)打开./apis/apps.py,可以看到该应用的Config类名为 apis.apps.ApisConfig,该名包含了其所在路径及名字:

f749f060ff77e88adc5a6c575dd62738.png

2)在./books/setting.py注册应用"apis":

2ad0271ba4085b66d9d599e20730cc44.png

二、接口编写及请求接口

1、开始编写简单的接口,在apis/view.py中添加代码;

1)get方法接口;

fromdjango.http import HttpResponse

import json

defapi_get(request):

    '''这里request参数为客户端发送的request请求'''

    get_context = {"status":"01",

               "methodName":"get",

               "message": "用的是get方法"

               }

    get_data = json.dumps(get_context)

    if request.method == "GET":  # request.method可以获得服务器接受到request请求的方法类型

        # return HttpResponse()将该接口的数据以json格式返回

        return HttpResponse(get_data,content_type="application/json,charset=utf-8")    

    else:

        return HttpResponse("请求方法错误")

b038d42a8043e9c852ea59281aa6afb5.png

2)post方法接口;

defapi_post(request):

    if request.method == "POST":

        api_name =request.POST.get("api_name")  #获得post请求中的参数值

        # 将post请求中的参数值处理后添加到HttpResponse中返回

        post_context = {"status":"02", "methodName": "post", "message":"该接口的请求方式为%s" % api_name}

        post_data = json.dumps(post_context)

        return HttpResponse(post_data,content_type="application/json,charset=utf-8")

    else:

        return HttpResponse("请求方法错误")

5e746da5552b39e9a12ecc2d9f550425.png

2、在./books/urls.py中添加接口路径

fromdjango.contrib import admin

fromdjango.urls import path

from  apis import views

urlpatterns= [

    path('admin/', admin.site.urls),

    path('api_get/',views.api_get),

    path('api_post/',views.api_post),

]

cb6944b7d447502bd13b8ca6a30e8bb3.png

如果出现红色波浪线,将boods应用设置为Sources Root即可解决:

5537468d90a5e7a8e8ef7d5df09bc266.png

3、在网页中访问get接口页面;

在Terminal中输入python manage.py runserver启动服务(在输入manage.py时可先输入'm',再按'tab'键补全):

d00d9758b30c66603e9d19c8ec17a6d5.png

访问该网页链接:

93ab34945aa018b0d7790a9bb27f3199.png

会报404错误,莫慌,这是正常的,在url末尾添加我们写的接口地址,.books/urls.py中存有接口地址:

1d725b4269ebabd2b723838ce1c7f9dd.png

访问http://127.0.0.1:8000/api_get/  ,接口请求成功:

61352ba4e5252588c29814cd1df31585.png

问http://127.0.0.1:8000/api_post/,由于浏览器默认用的不是post请求,则会显示请求方法错误:

82108ee5478b541b0e281474f5f2c6c1.png

4、用pythonrequests模块访问已写好的接口;

1)在根目录下创建requestsTest.py文件,请求get接口;

import requests

get_data =requests.get("http://127.0.0.1:8000/api_get")

print(get_data.json())

ea9ae5e5e3a9a229eecddf7ac3682659.png

get请求成功

2)请求post接口;

post_content= {"api_name": "post方法"}  # post请求方法参数

post_data =requests.post("http://127.0.0.1:8000/api_post", data=post_content)

print(post_data.json())

结果报错:

6538ef099b1353087f49e16dde506109.png

这个问题是因为post请求返回的结果无法转换成json格式造成的,然后点击Terminal,可以看到django报的错:

90794cb9ae74d05321b90e38fa9f1d4f.png

主要看错误信息 :

You calledthis URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASHset.

这个错误意思大概就是:你提交的是post请求,但是url没有以slash("斜杠")结尾,而你又添加了APPEND_SLASH set 设置。

根据错误信息,再看我写的代码,url果然没有以"/"结尾,现在把"/"加上,重新启动服务(在Terminal中control+c后重新执行python manage.py runserver),这时候又出现了新的错误:

92946fb1bdef7637f8868a64e0774b3a.png

经过查资料,这是由于django默认post请求需要进行CSRF cookie验证,我们可以在settings中将验证屏蔽,将./books/settings.py中相关代码注释掉:

8bdf940f3cf5e531d0f0cb17e8abc05f.png

新启动服务,再次进行post请求,结果成功:

76a55f6d8544d68d1b190b0834ae2622.png

上就是利用django写简单接口的过程,这里的接口与实际接口测试中的restful接口在返回数据形式上有所不同,主要是让我们了解”客户端发送请求——服务器收到请求并处理请求——返回处理后的数据“这个过程。

如需源码请加吴老师微信索取:fosterwu

欢迎留言分享 088a192e42798386d5876fcca1d0adeb.png

测试人员的财富自由之路

来自测试人的困惑与思考

大龄 | 手工 | 自动化逆袭

【appium实战】appium混合页面点击方法tap的使用

实战:微信小程序+appium测试实例

实战:微信公众号+appium测试实例

使用LR编写windows sockets协议xml报文格式脚本

Python实战:file tell()返回的指针怎么就不一样?

互联网架构的演变

爬虫之我与正则的甜蜜约会

草根在测试行业如何杀出一条血路(8)

软件测试行业现状2018年度报告

2018web测试开发培训一年期周六班!

324ebe495ff249ebd82802dcb0f8d592.png 在喜马拉雅app搜索并收听“光荣之路”电台 098266d188dc93fea944e0ee26f14a05.png 光荣之路 招聘|征稿|合作 |QQ群 735821166@qq.com python群:457561756 性能群:415987441 招聘群:203715128 1b6305d3983bbd95d4f65ac3f1627fdc.png爱我,请给我好看
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值