用Django开发简单的POST/GET接口

摘要:
所以我们需要在这里添加一个if-else判断,如果不是POST请求,则返回登录名。html页面从django转换为1。shortcutimportRender23#在此处创建视图。4来自django。http:。来自django的responseimportHttpResponse5。快捷方式importRender678defLogin:9ifrequest。method=='POST':10用户名=请求。帖子。get11returnHttpResponse12else:13returnrender4.在设置“DIRS”的TEMPLATES的[]中添加一行代码:[os.path.coin],5.在设置中的MIDDLEWARE中释放这行报警代码。如果没有评论,登录后页面将显示“禁止”。6.运行程序以验证用户名和密码。单击登录页面返回“Thisisfirstest”,表示您已成功使用Fiddler测试并捕获了界面。信息正确开发GET接口1.修改视图的以下部分。来自django的py 1。shortcutimportRender23#创建您的viewshere。4来自django。http:。来自django的responseimportHttpResponse5。快捷方式importRender678defLogin:9ifrequest。method=='GET':10用户名=请求。获取。get11returnHttpResponse12else:13returnrender2.运行程序在地址栏中输入URL并返回用户名信息。

前情提要:

搭建Django环境   https://www.cnblogs.com/littlemonsterksn/p/14347772.html

用Django创建一个项目   https://www.cnblogs.com/littlemonsterksn/p/14354684.html

(接上)

一、开发POST接口

1. 在templates下面,新建一个HTML File,命名为login.html

用Django开发简单的POST/GET接口第1张

用Django开发简单的POST/GET接口第2张

2. 在login.html写一个简单的登录页面

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>login</title>
 6 </head>
 7 <body>
 8 <form action="/login/" method="POST">
 9     <h1>用户名:<input name="username"></h1>
10     <h1>密码:<input name="password"></h1>
11     <input type="submit" value="登录">
12 </form>
13 </body>
14 </html>

用Django开发简单的POST/GET接口第3张

3.  在viwes里添加代码

从 http://127.0.0.1:8000/login 登录时,需要显示刚才编辑的的login.html这个登录页面,但这个页面一进来不是POST请求,就无法显示。所以这里需要加一个if-else判断,如果不是POST请求就把login.html这个页面返回去

 1 from django.shortcuts import render
 2 
 3 # Create your views here.
 4 from django.http.response import HttpResponse
 5 from django.shortcuts import render
 6 
 7 
 8 def Login(request):
 9     if request.method == 'POST':
10         username = request.POST.get('username')
11         return HttpResponse('This is first test')
12     else:
13         return render(request, 'login.html')

用Django开发简单的POST/GET接口第4张

4. 在Settings的TEMPLATES的DIRS的[ ]内添加一行代码

'DIRS': [os.path.join(BASE_DIR, 'templates')],

用Django开发简单的POST/GET接口第5张

5. 把Settings中MIDDLEWARE的这一行警报代码释掉

用Django开发简单的POST/GET接口第6张

如果不注释的话,在登录后,页面会显示"Forbidden (403)"

用Django开发简单的POST/GET接口第7张

用Django开发简单的POST/GET接口第8张

6. 运行程序验证

输入用户名和密码,点击登录

页面返回了"This is first test",说明成功了

用Django开发简单的POST/GET接口第9张

用Django开发简单的POST/GET接口第10张

 用Fiddler测试,抓到了该接口,信息正确

用Django开发简单的POST/GET接口第11张

二、开发GET接口

 1. 把views.py下面这几个地方稍作修改

 1 from django.shortcuts import render
 2 
 3 # Create your views here.
 4 from django.http.response import HttpResponse
 5 from django.shortcuts import render
 6 
 7 
 8 def Login(request):
 9     if request.method == 'GET':
10         username = request.GET.get('username')
11         return HttpResponse(username)
12     else:
13         return render(request, 'login.html')

用Django开发简单的POST/GET接口第12张

2. 运行程序

在地址栏输入URL,返回了username的信息。测试成功。

用Django开发简单的POST/GET接口第13张

三、数据序列化

1. 把返回的数据变成json格式

 1 from django.shortcuts import render
 2 
 3 # Create your views here.
 4 
 5 from django.http.response import HttpResponse
 6 from django.shortcuts import render
 7 import json
 8 
 9 
10 def Login(request):
11     if request.method == 'POST':
12         result = {}
13         username = request.POST.get('username')
14         mobile = request.POST.get('password')
15         # date = request.GET.get('date')
16         result['user'] = username
17         result['mobileNum'] = mobile
18         # result['date'] = date
19         result = json.dumps(result)
20 
21         return HttpResponse(result, content_type='application/json;charset=utf-8')  #数据以JSON的格式返回
22     else:
23         return render(request, 'login.html')

2. 运行验证

输入用户名、密码,点击登录

返回的数据确实是json格式的

用Django开发简单的POST/GET接口第14张

用Django开发简单的POST/GET接口第15张

 ==++==

遇到的问题&解决: 

问题1: 运行程序后,报错。报错信息 TypeError: render() missing 1 required positional argument: 'template_name'

版本信息是:

Django Version: 3.1.5

Python Version: 3.9.0

用Django开发简单的POST/GET接口第16张

 解决方法:在import render后,return render时,需要添加上参数request

用Django开发简单的POST/GET接口第17张

 修改后,再运行就没问题了

用Django开发简单的POST/GET接口第18张

 

免责声明:文章转载自《用Django开发简单的POST/GET接口》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java 的布局管理器GridBagLayout的使用方法(转)Git应用详解第五讲:远程仓库Github与Git图形化界面下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Django 中的 channels

Django Channels django channels 是django支持websocket的一个模块。 1. 安装 1 pip3 install channels 2. 快速上手 2.1 在settings中添加配置 注册channels的app ASGI_APPLICATION = "django_channels_demo.rout...

django文件上传地址以及media的设置

一、关于media的设置 django的media文件地址的设置其实是类似于static文件地址的设置。 media主要是用来存放一些用户上传的文件(头像、图片等) 分为三个部分: 一是在proj中建立一个media文件夹,文件夹名字可任意取,为方便起见,此处就取名为media。 二是在setting中设置MEDIA_ROOT和MEDIA_URL #用户...

hexo使用

hexo主题 hexo主题下载地址:https://hexo.io/themes/ 每个主题中都有相关的下载及配置说明,不过有些主题很坑,各种下载报错,建议使用常用的一些主题。 创建新文章 根目录命令行输入hexo new [模板] <文章名>新建文章 其中<模板>在scaffolds中,默认情况下有三个模板post、draft、p...

多线程之旅七——GUI线程模型,消息的投递(post)与处理

基于消息的GUI构架 在过去的日子中,大部分编程语言平台的GUI构架几乎没有发生变化。虽然在细节上存在一些差异,比如在功能和编程风格上,但大部分都是采用了相同的构架来响应用户输入以及重新绘制屏幕。这种构架可以被总结为“单线程且基于消息”。   Message msg; While(GetMessage(msg)) { TranslateMess...

微信小程序post请求和get请求

wx.request({ url: 'https://URL', //这里''里面填写你的服务器API接口的路径 data: {}, //这里是可以填写服务器需要的参数 method: 'GET', // 声明GET请求 // header: {}, // 设置请求的 header,GET请求可以不填...

Django解除端口占用

Error: That port is already in use.有两个方法可以解决(假设8000端口被占用):1.使用python manage.py runserver 8001 开一个新的端口。2.kill掉原来的端口(在root条件下)。2.1 在终端输入lsof -i:8000,列出进程信息。2.2 然后,找到进程的PID号,比如我的PID号...