首页 > 解决方案 > Django rest框架,发布后重定向

问题描述

我有一个使用 Django 休息框架的 API 构建。

有一个帖子,用户输入了一些数据,并且,在我的视图中有一个检索方法,它根据帖子中的数据呈现一个 HTML 页面。

帖子中有一个名为“mission_name”的字段,它是一个主键,因此当用户将任务名称插入到 URL 行的末尾时,它会运行检索方法。

任务名称:testredirect

http://127.0.0.1:8000/twosecondgdt/testredirect/ 将打开页面。

如何在成功发布后重定向检索方法?

# views.py

from __future__ import absolute_import

from django.shortcuts import render
from rest_framework.viewsets import ModelViewSet

from Project_Level.database_consts import THREE_POINTS_TRINAGULATION
from Project_Level.postgres_queries import HTMLFileInteractionWithDB
from .serializers import PointsSerializer
from .models import Points

from Project_Level.base_objects import GeoPoint
from .second_GDT_finding.app import MainApp


class PointsViewSet(ModelViewSet):
    # Return all missions ordered by id, reversed.
    queryset = Points.objects.all().order_by('-id')
    serializer_class = PointsSerializer

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

    def retrieve(self, request, *args, **kwargs):
        mission_name = self.points[1]

        assign_gdt = GeoPoint(lat=self.points[2], long=self.points[3])
        gdt1 = [assign_gdt.get_lat(), assign_gdt.get_long()]

        assign_uav = GeoPoint(lat=self.points[4], long=self.points[5], elevation=self.points[6])
        uav = [assign_uav.get_lat(), assign_uav.get_long(), assign_uav.get_elevation()]

        area_name = f"'{self.points[-2]}'"

        try:
            # Check if a file already exists in the DB.
            HTMLFileInteractionWithDB.table = THREE_POINTS_TRINAGULATION
            openfile = HTMLFileInteractionWithDB.return_file_from_db(mission_name=mission_name)
            print('File was fetched from DB')
            return render(request, openfile)
        except:
            # If no map was plotted, create a new one.
            main = MainApp.run(gdt1=gdt1, uav=uav, mission_name=mission_name, area=area_name)
            print('New file created')
            return render(request, main)

标签: pythondjangodjango-rest-framework

解决方案


推荐阅读