如何在模板中调用 api [关闭]
Posted
技术标签:
【中文标题】如何在模板中调用 api [关闭]【英文标题】:How can I call the api in template [closed] 【发布时间】:2021-12-06 22:16:45 【问题描述】:如何在django模板中调用rest api。我想设计微服务,只是想在前端调用一个api。我怎么能做到这一点。
通常当我在单片机中工作时,我会直接从 html 中的数据库调用它,但在微服务部分中则不会。
【问题讨论】:
Django 是一个 MVT 框架。即模型、视图、模板。所有的业务逻辑都应该写在 View 中。不应为此使用模板。这是实现微服务的好资源。 Implementing Microservices on AWS。有关更好的软件开发的更多信息,12 factor app 是一个很好的资源。 我正在设计一个微服务 Django 应用程序,我正在分别创建两个应用程序,它们相互通信以获取数据,并且有一个前端部分我将链接这两个应用程序。在这种情况下,我怎么能将它渲染到模板?我是否需要将 api 放入视图 n 然后将其渲染到模板。有什么方法可以实现吗? 是的,您必须从视图中调用 API,然后在模板中渲染...从模板中渲染它不是最佳做法。 【参考方案1】:如果您想从您的模板调用 Django API,那么您可以使用 AJAX。您可以从以下代码中获取参考并将其添加到您的 HTML 模板中
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script>
$.ajax(
type: 'GET',
dataType:"json",
url: 'https//yourendpoint/api/',
success: function (data, status, xhr)
console.log('data: ', data);
//your logic
);
</script>
更多详情,您可以查看link。可以使用 jquery 或 js 来实现。
【讨论】:
【参考方案2】:您需要分离您的核心逻辑,以便您可以从您的视图中调用您从 API 中调用的相同逻辑。为了说明这一点,
models.py
class MyModel(db.Model):
attr_1 = ...
attr_2 = ...
def add_x_y(self, x, y):
return x + y
由于您的逻辑存在于作为 MVT 结构基础的模型中,因此您可以在任何您喜欢的地方使用定义的逻辑。例如
api/views.py
def some_api_function():
x = 1
y = 3
result = 'result': MyModel.add_x_y(x,y)
return json_response(result)
views.py
def some_template_function():
x = 1
y = 3
result = 'result': MyModel.add_x_y(x,y)
return render_to_response(tempalate.html, 'result': result)
当您将逻辑分离到应用程序的底层时,您可以在 api 视图、普通视图和任何其他服务功能中重复使用。
请忽略语法,这只是示例使用。
【讨论】:
以上是关于如何在模板中调用 api [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Flutter:如何在加载页面之前从 Api 获取数据 [关闭]
什么是 OAuth,它如何保护 REST API 调用? [关闭]
Angular 5 - 当用户关闭浏览器窗口时如何进行 API 调用?
如何在不使用 curl 和 guzzle 的情况下从控制器 Laravel 调用 API,因为它不起作用 [关闭]