Как вернуть страницу c html, DRF - PullRequest
0 голосов
/ 23 февраля 2020

У меня есть следующее представление, которое получает данные из модели, запускает некоторые логики c и возвращает путь к файлу html.

from rest_framework.decorators import renderer_classes, api_view
from rest_framework.renderers import StaticHTMLRenderer
from rest_framework.response import Response
from rest_framework.viewsets import ModelViewSet

from three_Positions_plotting.app import main
from .serializers import LocationInfoSerializer
from .models import LocationInfo


class LocationInfoViewSet(ModelViewSet):
    queryset = LocationInfo.objects.filter(id=1).values()
    serializer_class = LocationInfoSerializer

    data = queryset.reverse()[0]
    serialized_data = LocationInfoSerializer(data, many=False)
    points = list(serialized_data.data.values())

    gdt1 = (points[1], points[2])
    gdt2 = (points[3], points[4])
    uav = (points[5], points[6], points[-2])

    @api_view(['GET'])
    @renderer_classes([StaticHTMLRenderer])
    def simple_html_view(self, request, gdt1=gdt1, gdt2=gdt2, uav=uav):
        data = main(gdt1, gdt2, uav)
        return Response(data)

Что я пытаюсь сделать сделать, это сделать сгенерированную html страницу, я новичок в django остальные рамки и создание API в целом.

Так что я не понимаю, как «активировать» метод в этом представлении Я думал, что, когда пользователь отправляет информацию в API, он автоматически возвращает ее, но когда я публикую некоторые данные, ничего не происходит, и logi c даже не запускается.

Logi c что я бегу:

import numpy as np
from Project_Level.angle_condition import MeetAngleCond
from Project_Level.plot_folium import PlotOnMap
from Project_Level.utils import convert_to_xy
from triangulationapi.three_Positions_plotting.dataframes import GetDataToGeoPandas
from triangulationapi.three_Positions_plotting.positions_data_collecting import PositionsData


def main(gdt1: list, gdt2: list, uav: list):
    # Get the complete latitude, longitude, lists.
    positions_data = PositionsData(gdt1=gdt1,
                                   gdt2=gdt2,
                                   uav=uav)
    full_lat_lon_list, lat_list, lon_list = positions_data.calculate_list_lens()

    # Get cartesian coordinates for every point.
    gdt1_xy = np.asarray(convert_to_xy(gdt1))
    gdt2_xy = np.asarray(convert_to_xy(gdt2))

    # Get the angle for every point in f_lat_lon_list
    angles_list = MeetAngleCond()
    plot_angles_list = angles_list.create_angles_list(lat_lon_list=full_lat_lon_list,
                                                      arrayed_gdt1=gdt1_xy,
                                                      arrayed_gdt2=gdt2_xy,
                                                      uav_elev=uav[-1])

    get_final_lists = GetDataToGeoPandas()
    lat_lon_a, lat_lon_b, optimal = get_final_lists.create_gpd_and_final_lists(angles_list=plot_angles_list,
                                                                               lat_list=lat_list,
                                                                               lon_list=lon_list)
    # Initialize a folium map.
    plot = PlotOnMap(lat_lon_a=lat_lon_a,
                     lat_lon_b=lat_lon_b,
                     optimal=optimal)
    plot.create_map(mid_point=gdt1, zoom=13)

    # Plot relevant locations.
    plot.plot_gdt_and_triangulation(gdt1=gdt1, gdt2=gdt2, uav=uav)

    # add some plugins to the map.
    plot.plugins()

    # return the generated html file with the map.
    html_file = plot.return_html_link()

    # auto opens the file.
    auto_open = plot.auto_open(html_map_file='index.html',
                               path='/home/yovel/PycharmProjects/Triangulation-Calculator/triangulationapi/three_Positions_plotting/index'
                                    '.html '
                               )

    return html_file
...