在 api 响应中处理字符串数据
Manipulate string data inside an api response
我的 DRF 中有一个 API,它以 HTML 字符串
发送数据
Views.py
class map(APIView):
def get(self, request):
....
data = pd.DataFrame({'lat': latitude, 'lon': longitude, 'name': markers_list})
m = folium.Map(location=[21, 78], tiles="OpenStreetMap", zoom_start=4.75)
for i in range(0, len(data)):
folium.Marker([data.iloc[i]['lon'], data.iloc[i]['lat']], popup=data.iloc[i]['name']).add_to(m)
print(" m is ", m)
html_string = m._repr_html_()
context = {'map2': html_string}
return Response(context)
上下文是:
{
"map2": "<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh...cHQ+\"
style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
}
在我的 iframe 中,我只需要响应中 <iframe src=\
前面的 data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh...cHQ+
,如何检索此数据?
尝试像这样拆分您的 "map2" 密钥:
input.split("\"")
它将生成数据拆分的数组:
array = ['...', '...', 'data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh...cHQ+\' ]
在这种情况下,您想要的数据位于第 3 个位置,因此 array[2]
有很多优雅的方法可以做到这一点。您可以使用 HTML 解析库。 BeautifulSoup 例如。
...
html_string = m._repr_html_()
src = BeautifulSoup(html_string).find('iframe').attrs['src']
...
我的 DRF 中有一个 API,它以 HTML 字符串
发送数据Views.py
class map(APIView):
def get(self, request):
....
data = pd.DataFrame({'lat': latitude, 'lon': longitude, 'name': markers_list})
m = folium.Map(location=[21, 78], tiles="OpenStreetMap", zoom_start=4.75)
for i in range(0, len(data)):
folium.Marker([data.iloc[i]['lon'], data.iloc[i]['lat']], popup=data.iloc[i]['name']).add_to(m)
print(" m is ", m)
html_string = m._repr_html_()
context = {'map2': html_string}
return Response(context)
上下文是:
{
"map2": "<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh...cHQ+\"
style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
}
在我的 iframe 中,我只需要响应中 <iframe src=\
前面的 data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh...cHQ+
,如何检索此数据?
尝试像这样拆分您的 "map2" 密钥:
input.split("\"")
它将生成数据拆分的数组:
array = ['...', '...', 'data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh...cHQ+\' ]
在这种情况下,您想要的数据位于第 3 个位置,因此 array[2]
有很多优雅的方法可以做到这一点。您可以使用 HTML 解析库。 BeautifulSoup 例如。
...
html_string = m._repr_html_()
src = BeautifulSoup(html_string).find('iframe').attrs['src']
...