sách gpt4 ai đã đi

python - 如何通过 Django Rest Framework 公开非模型模块方法?

In lại 作者:太空宇宙 更新时间:2023-11-03 15:05:40 25 4
mua khóa gpt4 Nike

Tôi đang sử dụng Django Rest Framework创建 API。有通过 API 公开的模型类,例如 City。现在我用一些有用的方法创建了一个 utils 模块:

# city/utils.py

def distance_between_cities(city1, city2):
return city1.distance(city2)

我想将示例方法 distance_between_cities 公开为 API 端点。所以我开始创建一个 View :

# city/views.py
from rest_framework import status
from rest_framework.response import Response
from rest_framework.views import APIView
from . import utils

class DistanceView(APIView):

def get(self, request, format=None):
city1 = request.query_params.get('city1', None)
city2 = request.query_params.get('city2', None)
distance = utils.distance_between_cities(city1, city2)
distance_hash = {'distance': distance}
return Response(distance_hash, status=status.HTTP_200_OK)

然后我尝试注册一个路由:

# city/urls.py
from rest_framework.routers import DefaultRouter
from . import views

router = DefaultRouter()
router.register(r'distance', views.DistanceView)

当我访问该网站时,显示以下sai lầm:

base_name argument not specified, and could not automatically determine the name from the viewset, as it does not have a .queryset attribute.

我希望看到 DRF 呈现的网站端点与其他(模型相关)端点类似。

DRF API website

最后,我想通过以下方式访问端点:

http://localhost:8000/api/cities/distance.json?city1=23&city1=42

我尝试通过 xoăn 检查 API:

$ curl -X HEAD -i http://localhost:8000/api/cities/distance.json?city1=23&city2=42

这是响应头:

HTTP/1.0 404 NOT FOUND
Date: Fri, 09 Oct 2015 16:45:06 GMT
Server: WSGIServer/0.2 CPython/3.4.3
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Vary: Accept, Cookie
Allow: GET, PUT, PATCH, DELETE, HEAD, OPTIONS

有用的链接

1 Câu trả lời

如果您需要列出新的入口点,则需要从 ViewSet 继承(请注意,我不是在谈论 ModelViewSet)。

我在这里写了一个关于如何做到这一点的简短指南和示例项目:https://medium.com/@linovia/django-rest-framework-viewset-when-you-don-t-have-a-model-335a0490ba6f

您不需要所有的 ViewSet 方法,可能只需要根据您的评论列出的方法。

关于python - 如何通过 Django Rest Framework 公开非模型模块方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33038396/

25 4 0
Bài viết được đề xuất: ftp - 如何在 PHP 中通过 TLS 使用隐式 FTP 建立 FTP 连接
Bài viết được đề xuất: python - 使用 FeatureUnion 拟合管道时出现 IndexError
Bài viết được đề xuất: java - SSL 握手失败错误
Bài viết được đề xuất: python - Google Console Search API 提供错误数据
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com