思路:以txt文件当作媒介,把请求返回的数据先放在txt中,然后再一起保存在Django模型里
前端
//axios添加用户
async addNew(){
await this.$axios.get("http://127.0.0.1:8000/detail/detailupload?"+"name="+this.nameadd+"&fitness="+this.fitnessadd+"&status="+
this.value).then(
(res)=>{
console.log("我获得了返回的数据",res.data)
},
(error)=>{
console.log("更改页面报错",error)
})
await this.$refs.upload.submit();
},
图片上传组件
<div class="item1">
<div style="padding-top: 10px">图片:</div>
<div>
<el-upload
ref="upload"
:auto-upload="false"
class="upload-demo"
drag
:on-change="beforeupload"
action="http://127.0.0.1:8000/detail/img/"
multiple>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
</div>
</div>
后端
import json
from django.http import HttpResponse
from django.shortcuts import render
from django.views.decorators.csrf import csrf_exempt
from detail.models import detailimg
from mysite import settings
# 一行一行读取
def read_file_line_by_line():
with open(r'detail\data.txt', 'r') as file:
for line in file:
print(line.strip()) # 去除行尾的换行符并输出
def write_to_txt(data):
with open(r'detail\data.txt', 'a+') as file:
if file.tell() > 0:
file.write('\n') # 在每次写入前添加换行符
file.write(str(data)) # 将数据写入文件
#根据行数读取
def read_line_by_number(line_number):
with open(r'detail\data.txt', 'r') as file:
lines = file.readlines() # 读取所有行并将其存储在一个列表中
if line_number <= len(lines): # 如果行数超过了文本总行数,不再执行
return lines[line_number - 1].strip() # 返回对应行的数据,并去除行尾的换行符
#超过4行清空文本
def clear_file():
with open(r'detail\data.txt', 'r+') as file:
lines = file.readlines()
if len(lines) >=4: # 判断文本行数是否超过 4 行
file.seek(0)
file.truncate() # 清空文本内容
@csrf_exempt
def detailupload(request):
'''宠物姓名'''
name = request.GET.get('name')
'''健康状况'''
fitness = request.GET.get('fitness')
'''状态'''
status = request.GET.get('status')
print("获取的前端数据-----》",name,fitness,status)
write_to_txt(name)
write_to_txt(fitness)
write_to_txt(status)
print("我是第一个请求")
read_file_line_by_line()
return HttpResponse("上传成功")
@csrf_exempt
def img(request):
'''获取图片'''
pic = request.FILES.get('file')
url = settings.MEDIA_ROOT + pic.name
with open(url, 'wb') as f:
for data in pic.chunks():
f.write(data)
write_to_txt(url)
print("我是第二个请求")
load = detailimg(name=read_line_by_number(1), fitness=read_line_by_number(2), status=read_line_by_number(3),
imgurl=read_line_by_number(4))
load.save()
read_file_line_by_line()
clear_file()
return HttpResponse("上传成功")
'''获取领养中心的数据'''
def getdata(request):
list = detailimg.objects.all()
list3 = []
for var in list:
data = {}
data['name'] = var.name
data['imgurl'] = var.imgurl
list3.append(data)
c = json.dumps(list3, ensure_ascii=False)
response = HttpResponse(c, content_type='application/json')
return response
'''获取领养中心详情页数据'''
def getdata2(request):
list = detailimg.objects.all()
list3 = []
for var in list:
data = {}
data['name'] = var.name
data['sex'] = var.sex
data['fitness'] = var.fitness
data['character'] = var.character
data['status'] = var.status
data['imgurl'] = var.imgurl
list3.append(data)
c = json.dumps(list3, ensure_ascii=False)
response = HttpResponse(c, content_type='application/json')
return response
# Create your views here.