django - 设置一些使用 Django Rest Framework API 的视图
问题描述
我有一个非常基本的 Django Rest API。
我不知道如何在同一个 django 项目中拥有一些 HTML 视图,该项目使用 API(最终保持 API 仅返回 JSON)。
我跟着这个,但它似乎改变了 API 视图(在这种情况下,curl 将检索 HTML 而不是 JSON): https ://www.django-rest-framework.org/api-guide/renderers/#templatehtmlrenderer
我需要另一个 Django 应用程序吗?另一个 Django 项目?一些 JS ?
编辑 :
好的,感谢 rrebase,我已经看到这是可能的。
但我无法使用 Curl 检索 JSON,这里是我的 views.py
from rest_framework import generics
from rest_framework.renderers import TemplateHTMLRenderer, JSONRenderer
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.permissions import IsAdminUser
from . import models
from . import serializers
class UserListView(generics.ListAPIView):
renderer_classes = [JSONRenderer, TemplateHTMLRenderer]
template_name = 'profile_list.html'
def get(self, request):
queryset = models.CustomUser.objects.all()
serializer_class = serializers.UserSerializer
return Response({'profiles': queryset})
我的模型.py
from django.db import models
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
def __str__(self):
return self.email
当我请求 API ( http://127.0.0.1:8000/api/v1/users/ )时,我收到错误“'CustomUser' 类型的对象不是 JSON 可序列化的”
抱歉,最初的问题有些不同...
解决方案
是的,你可以两者兼得。您提供给文档的链接具有以下内容:
您可以使用 TemplateHTMLRenderer 使用 REST 框架返回常规 HTML 页面,或者从单个端点返回 HTML 和 API 响应。
发出 API 请求时,将ACCEPT
request-header 相应地设置为html
或json
。
推荐阅读
- php - 当侧边栏在 single.php 中时,侧边栏分页不显示
- mongodb - MongoDB 聚合到 $group 并有条件地 $addToSet
- nginx - 如何将任何包含点的路径与 nginx 匹配?
- java - 如何使用 Android 和 Retrofit 在服务器中上传图片?
- amazon-web-services - 部署不同版本的 Web 应用程序
- sql - SQL 查询 MAX() 函数
- visual-studio-2019 - CS1580 使用通用且可为空的参数触发 (xml doc)
- sql - 如何从三个表中插入和连接?
- android - findViewById 从 searchView 返回 null
- xampp - XAMPP 控制面板未出现在开始菜单中