0
我正在构建一个API函数,它允许客户端发送带有URL参数的GET请求,服务器接收并处理基于给定信息的文件,并返回一个自定义文件。好消息是我所有的步骤都是独立工作的!如何使用Django Rest Framework返回HttpResponse?
我能够得到def get_query
函数中的所有内容,除了返回HttpResponse。该函数需要一个Queryset响应(我想是有道理的..)。我想我需要另一个功能,所以我可以返回HttpResponse,所以我创建了def send_file
。我不知道如何调用这个函数,现在它只是跳过它。
views.py。
class SubFileViewSet(viewsets.ModelViewSet):
queryset = subfiles.objects.all()
serializer_class = SubFilesSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,
IsOwnerOrReadOnly,)
def send_file(self, request):
req = self.request
make = req.query_params.get('make')
model = req.query_params.get('model')
plastic = req.query_params.get('plastic')
quality = req.query_params.get('qual')
filenum = req.query_params.get('fileid')
hotend = req.query_params.get('hotendtemp')
bed = req.query_params.get('bedtemp')
if make and model and plastic and quality and filenum:
filepath = subfiles.objects.values('STL', 'FileTitle').get(fileid = filenum)
path = filepath['STL']
title = filepath['FileTitle']
'''
#Live processing (very slow)
gcode = TheMagic(
make=make,
model=model,
plastic=plastic,
qual=quality,
path=path,
title=title,
hotendtemp=hotend,
bedtemp=bed)
'''
#Local data for faster testing
gcode = "/home/bradman/Documents/Programming/DjangoWebProjects/3dprinceprod/fullprince/media/uploads"
test_file = open(gcode, 'r')
response = HttpResponse(test_file, content_type='text/plain')
response['Content-Disposition'] = "attachment; filename=%s" % title
print (response)
return response
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
def get_queryset(self):
req = self.request
make = req.query_params.get('make')
model = req.query_params.get('model')
plastic = req.query_params.get('plastic')
quality = req.query_params.get('qual')
filenum = req.query_params.get('fileid')
hotend = req.query_params.get('hotendtemp')
bed = req.query_params.get('bedtemp')
return self.queryset
#function proved in here then removed and placed above
#get_query required a queryset response
我有Django的REST框架缺乏经验,我不知道是否有实现这个更好的办法,否则我怎么会调用该函数def send_file
?
,它运行'高清get_query'并返回404错误。 – RknRobin
@RknRobin你的意思是'def get_queryset'? –
双重检查后,它实际上运行整个'class SubFileViewSet',包括'def get_queryset',但仍然忽略'def send_file'。 – RknRobin