在api响应中处理字符串数据

时间:2019-11-18 12:03:05

标签: python django folium

我的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中,我只需要响应中data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh...cHQ+前面的<iframe src=\,如何检索此数据?

2 个答案:

答案 0 :(得分:1)

有很多优雅的方法可以做到这一点。您可以使用HTML解析库。例如BeautifulSoup

...
html_string = m._repr_html_()
src = BeautifulSoup(html_string).find('iframe').attrs['src']
...

答案 1 :(得分:0)

尝试像这样拆分“ map2”键:

input.split("\"")

它将生成数组,其中数据拆分如下:

array = ['...', '...', 'data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh...cHQ+\' ]

在这种情况下,所需的数据位于第3个位置,因此array [2]

相关问题