在 HTML 页面或模板中使用 Django-REST-Framework 从在 Django 中创建的 API 获取/显示 API 数据

Posted

技术标签:

【中文标题】在 HTML 页面或模板中使用 Django-REST-Framework 从在 Django 中创建的 API 获取/显示 API 数据【英文标题】:Get/Display API data at front end from an API created in Django using Django-REST-Framework in an HTML page or Template 【发布时间】:2019-12-27 15:11:36 【问题描述】:

我使用 Django 已经有一段时间了,但只是在基本的后端级别。现在我已经开始使用 DRF 或 Django-REST-Framework 来创建 API,这对我来说是新事物。我已经成功地使用它制作了一个 API,并通过点击数据的 URL 使用 Postman 对其进行了测试。我的应用程序以 JSON 格式发送数据。问题是我找不到教程或链接来查看如何在前端使用此 API 数据。如何发送请求以获取数据,然后制作表单以在后端保存数据。

模型.py

class Poll(models.Model):
    question = models.CharField(max_length=100)
    created_by = models.CharField(max_length=256)
    pub_date = models.DateTimeField(auto_now=True)

序列化器.py

class PollSerializer(serializers.ModelSerializer):
    class Meta:
        model = Poll
        fields= ('created_by', 'question', 'pub_date')

views.py

class PollDetail(generics.RetrieveUpdateDestroyAPIView):
    serializer_class = serializers.PollSerializer
    queryset = Poll.objects.all()
    authentication_classes = [TokenAuthentication, BasicAuthentication]
    permission_classes = [IsAuthenticatedOrReadOnly]

urls.py

path('polls/<int:pk>/', views.PollDetail.as_view(), name='poll_detail_api'),

而我的结果有点像这样



    "created_by": "shady",
    "question": "how do you deploy Django on Heroku?",
    "pub_date": "2019-08-20T09:05:11.113437Z"


有人可以帮我解决这个问题吗?

另外如何使用保存在我的数据库中的令牌发送信息以对用户进行身份验证?

【问题讨论】:

【参考方案1】:

您将使用哪种前端技术?

如果你想使用 AngularJS 你可以查看here 如果你想使用 React 检查 here 和 here 如果您想使用 Ajax,请查看 here

【讨论】:

但是如果我不想使用其中的任何一个怎么办。这些只是框架。不使用某些框架或库就无法完成。有人告诉我它只能使用 jQuery 来完成。 您也可以使用 jquery 和纯 javascript。这是给你的 jquery 示例 -> medium.com/@_christopher/… 不知何故,我能够将数据显示为 [object Object]。请告诉我如何将其呈现为文本?我正在使用一个非常简单的 html 页面。 $.get("127.0.0.1:8000/rest-api/polls/2", function(data) $(".result").text(data); alert("加载已执行。");

以上是关于在 HTML 页面或模板中使用 Django-REST-Framework 从在 Django 中创建的 API 获取/显示 API 数据的主要内容,如果未能解决你的问题,请参考以下文章

在 HTML 页面或模板中使用 Django-REST-Framework 从在 Django 中创建的 API 获取/显示 API 数据

如何在不使用 js 或 html 的情况下摆脱 django 模板变量中的空间和 amp

怎么预览thymeleaf模板写的html页面?

模板仅在 html 中显示

5,VTemplate模板引擎的使用--高级篇

停止刷新 django 模板中的 js 文件