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

一、Get请求

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

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中的完整代码为:

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中的完整代码为

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中的代码:

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错误,表示服务器拒绝或禁止访问。 服务器端提示的错误则是:

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

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

原文发布于微信公众号 - KidsCode少儿编程(gh_de7b45c40e8b)

原文发表时间:2018-09-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一个会写诗的程序员的博客

linux 批量杀死多个进程 kill

(ps|grep python|awk '{print $1}')|xargs kill -9

3552
来自专栏Samego开发资源

Redis数据库集群搭建 | 实践篇

2094
来自专栏技术记录

centOS7 mini配置linux服务器(五) 安装和配置tomcat和mysql

配置java运行环境,少不了服务器这一块,而tomcat在服务器中占据了很大一部分份额,这里就简单记录下tomcat安装步骤。 下载 首先需要下载tomcat7...

2208
来自专栏mantou大数据

MacOS多版本Python切换方案

6264
来自专栏电光石火

eclipse配置tomcat运行时访问路径不要项目名称

1:双击打开tomcat 2:选择Modules,选择你要修改的项目 ? 3:点击Edit,把path修改成空或者你自己想要的路径即可! ?

3146
来自专栏乐百川的学习频道

用winsw让任何Windows程序都能运行为服务

winsw介绍 有时候我们需要在Windows下开机运行某些程序,这对于有图形界面的程序来说一般不是什么事,在选项中选中开机启动,然后它们就可以自动运行了。但是...

37110
来自专栏AhDung

【手记】解决VS2017 git 拉取按钮灰色的问题

若干仓库都是能推不能拉,下面显示当前分支不跟踪远程分支,后来在这里找到给分支建立跟踪的方法,又在这里找到在VS2017中敲git命令的方法,在此感谢上述博文的作...

2152
来自专栏闵开慧

tomcat里面的文件详细说明

如何安装tomcat服务器   安装Tomcat之前要先安装JDK,可从http://java.sun.com上下载最新版本的JDK。 Tomcat可从Apac...

42210
来自专栏积累沉淀

搭建storm集群

搭建storm集群 系统centos7 1、安装Java jdk  1.7 2、安装zookeeper 3.4.8 3、安装Python2.7X 4...

3597
来自专栏云计算教程系列

如何在CentOS 7上使用Postgres,Nginx和Gunicorn设置Django

Django是一个功能强大的Web框架,可以帮助您启动Python应用程序或网站。Django包含一个简化的开发服务器,用于在本地测试您的代码,但是对于任何与生...

1653

扫码关注云+社区

领取腾讯云代金券