首页 > 编程问答 >我收到错误:“AttributeError:类型对象‘UserList’没有属性‘as_view’”,就像,它没有看到“as_view()”

我收到错误:“AttributeError:类型对象‘UserList’没有属性‘as_view’”,就像,它没有看到“as_view()”

时间:2024-08-01 16:12:03浏览次数:17  
标签:python django django-rest-framework

我收到错误:“AttributeError:类型对象‘UserList’没有属性‘as_view’”,就像,它没有看到“as_view()”

Userapp 中的 My urls.py

from django.urls import path
from .views import *

urlpatterns = [
    path('list', UserList.as_view(), name = 'user-view')
]

views.py:| ||序列化器.py:

from django.shortcuts import render
from rest_framework.views import APIView
from django.contrib.auth.models import User
from .serializer import UserSerializer
from rest_framework import response

class UserList():
    def get(self, request, *args, **kwargs):
        user_list = User.objects.all()
        serializer = UserSerializer(instance = user_list, many = True)
        return response(data = serializer.data)

serializers.py:

from rest_framework.serializers import ModelSerializer
from django.contrib.auth.models import  User

class UserSerializer(ModelSerializer):
    class Meta:
        model = User
        fields = ['username', 'email', 'first_name',]

此错误是由于你的 UserList 类未从必要的 Django Rest Framework (DRF) 类继承而引起的。要解决此问题,你需要让你的 UserList 类继承自 APIView ListAPIView

以下是修改后的代码:

views.py

from django.shortcuts import render
from rest_framework.views import APIView, ListAPIView  # 导入 ListAPIView
from django.contrib.auth.models import User
from .serializer import UserSerializer
from rest_framework import response
from rest_framework.permissions import IsAdminUser

# 继承自 ListAPIView 用于更简洁的代码
class UserList(ListAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    permission_classes = [IsAdminUser] # 仅允许管理员访问此视图


# 你可以使用 APIView 来实现更自定义的逻辑,但需要自己处理分页等
# class UserList(APIView):
#     def get(self, request, *args, **kwargs):
#         user_list = User.objects.all()
#         serializer = UserSerializer(instance=user_list, many=True)
#         return response(data=serializer.data)

解释:

  1. 导入 ListAPIView : 我们从 rest_framework.views 导入 ListAPIView
  2. 继承自 ListAPIView APIView :
    • ListAPIView 已经内置了处理列表视图的逻辑,你只需要设置 queryset serializer_class 属性即可。
    • 如果你需要更灵活的自定义逻辑,可以使用 APIView ,但需要自己处理数据获取、序列化和响应。
  3. 设置权限: 添加 permission_classes = [IsAdminUser] 来限制只有管理员用户可以访问用户列表。

通过这些修改, UserList 类将继承 as_view() 方法,你将不再遇到 AttributeError

标签:python,django,django-rest-framework
From: 78819815

相关文章

  • 为什么Python库中还没有Gauss-Jordan消去函数?
    Gaussian-Jordan消除法是一种常用且方便的技术。在矩阵计算中,该方法得到广泛应用。但是,Python库中没有此方法的内置函数。设计这样的功能并不困难。开发人员似乎忽略了这个功能。这可能是什么原因?希望开发者能够重视这一点,并开发与该方法相关的功能。虽然高斯-约旦消元......
  • Python爬虫 - js逆向之扣出某平台的_signature加密字段
    前言好久没有做逆向案例分析了,最近都在看同行朋友写好的案例,感觉学到很多,算是取长补短了不多bb,机缘巧合下,拿到个目标网站分析首先抓个包,就看到请求参数里带着这几个参数主要就是_signature了,其他的参数都不重要得想必你一看就知道啥意思了。行,开始分析_signature......
  • python 音频处理(1)——重采样、音高提取
    采集数据->采样率调整使用torchaudio进行重采样(cpu版)首先导入相关包,既然使用torch作为我们的选项,安装torch环境我就不必多说了,如果你不想用torch可以使用后文提到的另一个库1importtorch2importtorchaudio3fromtorchaudio.transformsimportResample4fromtime......
  • 用于从连接到 LAN 交换机的四个 Arduino 扩展板读取/保存数据的 Python 代码
    我有四个Arduino扩展板连接到LAN交换机。每个人都会发出一条“HelloJane”消息。LAN交换机已连接到我的PC。我需要将每个Arduino的数据/消息保存在PC上的单独文件夹中。请帮助使用Python脚本/代码。我能够看到来自所有四个Arduino的消息,但无法将它们保存到文......
  • 使用 Python 生产者和消费者在 Kubernetes minikube 上设置 Kafka Kraft
    我正在尝试从kubernetes集群外部连接到kubernetesminikubekafkapod。服务器启动没有任何问题,但我无法设法将本地kafka生产者/消费者连接到外部kafkapod。在集群内的kafka服务器映像上,我将bootstrap-server设置为:bin/kafka-topics.sh--create--bootst......
  • python llama_index.indices.list.retrievers 导入错误
    fromllama_indeximportGPTListIndexfromllama_index.indices.list.retrieversimportListIndexLLMRetrieverdocuments=SimpleDirectoryReader('./data').load_data()index=GPTListIndex.from_documents(documents,service_context=service_context)r......
  • 如何使用 python 和 bs4 修复抓取 web 表输出 csv
    请帮帮我,,我想在“td”、“Barcode”和“namaproduk”中获取2个数据,但我得到的数据非常糟糕。我应该修复什么?importcsvimportrequestsfrombs4importBeautifulSoupoutfile=open("dataaa.csv","w",newline='')writer=csv.writer(outfile)page=0whilepag......
  • 基于Django的超市小程序+47822(免费领源码)可做计算机毕业设计JAVA、PHP、爬虫、APP、小
    基于django超市小程序摘 要随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,超市小程序被用户普遍使用,为方便用户能够可以随时进行超市小程序的数据信息管理,特开发了基于djan......
  • 【优秀python django系统案例】基于python的医院挂号管理系统,角色包括医生、患者、管
    随着信息技术的迅猛发展,传统的医院挂号管理方式面临着效率低下、排队时间长、信息不对称等诸多问题。这些问题不仅影响患者的就医体验,也加重了医院工作人员的负担。在此背景下,基于Python的医院挂号管理系统应运而生。该系统旨在通过信息化手段优化挂号流程,提高管理效率,提升医疗......
  • Python-PLAXIS自动化建模技术与典型岩土工程
    原文链接:Python-PLAXIS自动化建模技术与典型岩土工程https://blog.csdn.net/2301_78164062/article/details/140607885?spm=1001.2014.3001.5501一:Plaxis软件及PlaxisPythonAPI环境搭建1、Plaxis2D\Plaxis3D软件2、面向对象编程语言Python及其开发环境Spyder3、Plaxis输......