【发布时间】:2018-02-23 12:15:07
【问题描述】:
是否有正确/正确的方法来实现 RESTful API 和在 Django 中使用该 API 的用户界面?我有一个应用程序,我想为其创建一个 REST API,并且还有一个 Web 界面,但我不知道最好的方法。假设我想实现以下端点:/1.0/transactions。我可以为 API 创建一个视图
from .models import Transactions
from django.core import serializers
from django.http import HttpResponse
from django.shortcuts import render
from django.views.generic.base import View
class TransactionApiView(View):
def get(self, request):
data = serializers.serialize('json', Transactions.objects.all())
return HttpResponse(data, content_type="application/json")
现在我想用我的交易实际呈现一个 HTML 页面。我认为有 3 种方法:
- 调用我的 API,它返回 JSON 有效负载并使用有效负载中的数据呈现模板。
- 在呈现模板的视图中复制 API 中的代码。
- 在单个类中实现 API 和用户界面(我什至不知道这是否可能)。
第一种方法需要我以某种方式在另一个视图中调用我的视图(我知道你不应该这样做),第二种方法违反了 DRY 政策。前提是,在这个例子中没有那么多代码要复制,但是 POST 或 PATCH 可能会导致复制更多,因为我可能必须在将数据保存到数据库之前验证数据或执行其他过程。
是否有标准/适当/普遍同意的方法来解决这个问题?
【问题讨论】: