get操作
参考:https://www.cnblogs.com/yuany66/p/10785589.html
要在python客户端中连接web后端,后端接口已经分离,写好,并且相应的前端js也写好
要写出等价于上述js代码的python客户端代码,如下
import requests
if __name__=="__main__":
content={'username':1,'password':2}
r=requests.get('http://123.60.56.46:8000/settings/login',params=content)
print(r.url)
print(r.text)
post操作
文件传输如下
用Python的客户端可以这么写
参考:https://zhuanlan.zhihu.com/p/165105796
import requests
def UpFile(Url, FilePath):
'''
用于POST上传文件以及提交参数
@ Url 上传接口
@ FilePath 文件路径
@ data 提交参数 {'key':'value', 'key2':'value2'}
'''
files = {'file': open(FilePath, 'rb')}
result = requests.post(Url, files=files)
return result
url = 'http://123.60.56.46:8000/files/file_up/'
# 需提交的参数
# 需上传的文件路径
file = r'D:\gxq\ao_meng\OneDrive\a_m\模板\bellman_ford模板.cpp'
#D:\gxq\ao_meng\OneDrive\a_m\模板\bellman_ford模板.cpp
r = UpFile(url, file)
# 打印返回的值
print(r.text)
选择文件上传如下:
import requests
import tkinter as tk
from tkinter import filedialog
def getLocalFile():
root=tk.Tk()
root.withdraw()
filePath=filedialog.askopenfilename()
print('文件路径:',filePath)
return filePath
def UpFile(Url, FilePath):
'''
用于POST上传文件以及提交参数
@ Url 上传接口
@ FilePath 文件路径
@ data 提交参数 {'key':'value', 'key2':'value2'}
'''
files = {'file': open(FilePath, 'rb')}
result = requests.post(Url, files=files)
return result
url = 'http://123.60.56.46:8000/files/file_up/'
# 需提交的参数
# 需上传的文件路径
FilePath=getLocalFile()
r = UpFile(url, FilePath)
# 打印返回的值
print(r.text)
如果python客户端既要上传文本与文件
参考:https://blog.csdn.net/weixin_44623010/article/details/108406310
import requests
import tkinter as tk
from tkinter import filedialog
def getLocalFile():
root=tk.Tk()
root.withdraw()
filePath=filedialog.askopenfilename()
print('文件路径:',filePath)
return filePath
def UpFile(Url, FilePath):
'''
用于POST上传文件以及提交参数
@ Url 上传接口
@ FilePath 文件路径
@ data 提交参数 {'key':'value', 'key2':'value2'}
'''
files = {'file': open(FilePath, 'rb')}
data = {'username': 'capg'}
print(files)
result = requests.post(Url, files=files,data=data)
return result
url = 'http://120.27.156.160:8000/files/file_up/'
# 需提交的参数
# 需上传的文件路径
FilePath=getLocalFile()
r = UpFile(url, FilePath)
# 打印返回的值
注意我这里用的是files与data,注意files针对文件,data即为各类数据,还有一个为params(最开始我都在用它,实际上它等价于url地址后面加?,服务器POST会得不到params的形式)
服务器对应上述客户端上传的django代码如下
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
from django.http import JsonResponse
from demo.models.competition.competition_videos import Video
@csrf_exempt
def upload_ajax(request):
video_name=request.FILES.get('file').name
user_name=request.POST.get('username')#接收参数
video_photo="1"
if Video.objects.filter(video_name=video_name).exists():
return JsonResponse({
'result': "already_exist"
})
if request.method == 'POST':
file_obj = request.FILES.get('file')
import os
path1 = os.path.abspath(os.path.join(os.getcwd()))
# print(path1)
#需要存储的地址
path_url=os.path.join('demo', 'static', 'file', file_obj.name)
sql_url=os.path.join('static', 'file', file_obj.name)
f = open(os.path.join(path1,path_url), 'wb')
for chunk in file_obj.chunks():
f.write(chunk)
f.close()
Video.objects.create(video_name=video_name,video_photo=video_photo,video_url=sql_url,video_user=user_name)
return JsonResponse({
'result': "success"
})
本内容为合法授权发布,文章内容为作者独立观点,不代表开发云立场,未经允许不得转载。