Python 在django rest框架中返回生成的HTML文件

Python 在django rest框架中返回生成的HTML文件,python,django-rest-framework,django-views,logic,Python,Django Rest Framework,Django Views,Logic,我有以下视图,它接收用户传入的数据并返回一个HTML文件(folium映射) 我有三个问题: 首先,此视图在浏览器中引发错误 TypeError at /locations/ 'LocationInfo' object is not iterable 第二,, 如何将生成的HTML文件返回给用户 第三,, 我希望当用户输入数据时,逻辑将运行并返回所述HTML文件 这里我的业务逻辑使用用户输入的值来绘制地图,并生成保存在目录中的HTML文件,我可以返回所述文件的路径,或者我已经做了另一个选项,在

我有以下视图,它接收用户传入的数据并返回一个HTML文件(folium映射)

我有三个问题:

首先,此视图在浏览器中引发错误

TypeError at /locations/
'LocationInfo' object is not iterable
第二,, 如何将生成的HTML文件返回给用户

第三,, 我希望当用户输入数据时,逻辑将运行并返回所述HTML文件

这里我的业务逻辑使用用户输入的值来绘制地图,并生成保存在目录中的HTML文件,我可以返回所述文件的路径,或者我已经做了另一个选项,在另一个窗口中自动打开HTML

#views.py
从rest_framework.viewset导入模型视图集
from.serializers导入LocationInfoSerializer
从。模型导入位置信息
从三个_位置_plotting.app导入main
def映射信息到逻辑(gdt1、gdt2、uav):
html_file=main(gdt1=gdt1,gdt2=gdt2,uav=uav)
返回html\u文件
类位置信息视图集(ModelViewSet):
queryset=LocationInfo.objects.latest('date\u added')
serializer\u class=LocationInfoSerializer
serializer=LocationInfoSerializer(queryset,many=False)
values=list(serializer.data.values())
gdt1=[值[1],值[2]]
gdt2=[值[2],值[3]]
uav=[值[4],值[5]]
数据=将信息映射到逻辑(
gdt1=gdt1,
gdt2=gdt2,
无人机
)
我的逻辑运行点:

将numpy导入为np
从项目级别角度条件导入第二次
从Project\u Level.plot\u folium导入PlotOnMap
从Project_Level.utils导入将_转换为_xy
从triangulationapi.three_Positions_plotting.dataframes导入GetDataToGeoPandas
从三角剖分API.three_Positions_plotting.Positions_data_收集导入位置数据
def主(gdt1:列表、gdt2:列表、uav:列表):
#获取完整的纬度、经度和列表。
位置数据=位置数据(gdt1=gdt1,
gdt2=gdt2,
无人机(uav=uav)
完整横向纵向列表,横向列表,纵向列表=位置数据。计算横向列表镜头()
#获取每个点的笛卡尔坐标。
gdt1_xy=np.asarray(将_转换为_xy(gdt1))
gdt2_xy=np.asarray(将_转换为_xy(gdt2))
#获取f_lat_lon_列表中每个点的角度
角度列表=MeetAngleCond()
绘图角度列表=角度列表。创建角度列表(横向列表=纵向列表,
阵列_gdt1=gdt1_xy,
阵列_gdt2=gdt2_xy,
无人机=无人机[-1])
get_final_lists=GetDataToGeoPandas()
lat_lon_a,lat_lon_b,optimal=获取最终列表。创建最终列表和最终列表(角度列表=绘图角度列表,
横向列表=横向列表,
lon_列表=lon_列表)
#初始化一个叶映射。
plot=PlotOnMap(lat_lon_a=lat_lon_a,
lat_lon_b=lat_lon_b,
最佳=最佳)
绘图。创建地图(中点=gdt1,缩放=13)
#绘制相关位置。
绘图。绘图和三角测量(gdt1=gdt1,gdt2=gdt2,uav=uav)
#在地图上添加一些插件。
plot.plugins()
#返回生成的html文件和映射。
html\u file=plot.return\u html\u link()
#自动打开文件。
#auto_open=plot.auto_open(html_map_file='index.html',
#path='/home/yovel/Pycharm项目/三角测量-#计算器/三角测量API/three_Positions_plotting/index'
#“.html”
#                          )

如果没有要显示的集合,则应将
RetrieveModelMixin
GenericAPIView
一起使用。e、 g:替换行
class LocationInfoViewSet(ModelViewSet):
,使用此行:

class LocationInfoViewSet(GenericAPIView, RetrieveModelMixin):

返回的html应位于
LocationInfoSerializer
上,作为其字段之一。

如果没有要显示的集合,则应将
RetrieveModelMixin
GenericAPIView
一起使用。e、 g:替换行
class LocationInfoViewSet(ModelViewSet):
,使用此行:

class LocationInfoViewSet(GenericAPIView, RetrieveModelMixin):

返回的html应该在
LocationInfoSerializer
上,作为它的一个字段。

Hi Yovel,如果您有三个独立的问题,您应该分别发布它们。另外,不要把所有的代码都包括在内,要试着理解问题所在,只包括最基本的相关代码。此外,不要包含所有代码,而是尝试理解问题所在,只包含最小的相关代码。