前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小朋友学Python Web(2):Get和Post请求

小朋友学Python Web(2):Get和Post请求

作者头像
海天一树
发布2018-10-08 16:31:58
7440
发布2018-10-08 16:31:58
举报
文章被收录于专栏:海天一树海天一树

一、Get请求

如果你要做一个App项目,比如iOS或安卓项目,这时App和后端的项目是分离的。 此时要发网络请求,可以采用Get方式,也可以采用Post方式。 这里先介绍Get方式。 新建client_get.py,模拟客户端的GET请求 client_get.py中的完整代码为

代码语言:javascript
复制
import urllib.request

url = 'http://127.0.0.1:8000/mainpage?param1=hello&param2=world'
req = urllib.request.Request(url)
data = urllib.request.urlopen(req).read()

print(data)

服务器端FirstWebDemo中的views.py作少量改动,其他地方不用动。 修改后的views.py中的完整代码为:

代码语言:javascript
复制
from django.shortcuts import render

# Create your views here.
def index(request):
    print(request.GET.get("param1"))
    print(request.GET.get("param2"))
    return render(request, 'index.html')

注意,PyCharm中修改代码后,不用重启PyCharm,只要保存代码后,PyCharm会自动部署新代码,很方便

在CMD窗口运行客户端代码,运行结果如下

1.png

服务器端收到客户端的GET请求后,运行结果如下

2.png

二、Post请求

除了发送GET请求外,还可以发送POST请求。 新建client_post.py,模拟客户端的POST请求 client_post.py中的完整代码为

代码语言:javascript
复制
import requests
import json

url = 'http://127.0.0.1:8000/mainpage' #django接口路径

parms = {
   'name' : 'This is request from client', #发送给服务器的内容
}

headers = {  #请求头信息
    'User-agent' : 'none/ofyourbusiness',
    'Spam' : 'Eggs'
}

resp = requests.post(url, data=parms, headers=headers) #POST请求
print(resp)

#服务器返回的数据
text = resp.text
print(text)

服务器端FirstWebDemo中,只需要修改view.py中的代码:

代码语言:javascript
复制
from django.shortcuts import render
from django.http import JsonResponse

# Create your views here.
def index(request):
    data={'name':'This is response data from server.'} #返回给客户端的数据
    print(request.body)
    if request.method=="POST":
        print(request.POST) #查看客户端发来的请求内容
        return JsonResponse(data) #通过django内置的Json格式,返回给客户端数据

在CMD窗口运行client_post.py后,得到403错误,表示服务器拒绝或禁止访问。 服务器端提示的错误则是:

代码语言:javascript
复制
Forbidden (CSRF cookie not set.): /mainpage
[24/Aug/2018 19:39:06] "POST /mainpage HTTP/1.1" 403 2868

将服务器端settings.py中的 'django.middleware.csrf.CsrfViewMiddleware', 注释起来

3.png

再次在CMD窗口中运行客户端代码client_post.py,运行结果为

4.png

服务端的运行结果为

5.png

从上面的结果可以看出,客户端和服务器端可以正常通信。

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

本文分享自 KidsCode少儿编程 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Get请求
  • 二、Post请求
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档