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"
        })
本内容为合法授权发布,文章内容为作者独立观点,不代表开发云立场,未经允许不得转载。

CSDN开发云