![](/img/trans.png)
[英]AttributeError: 'set' object has no attribute 'items'
[英]AttributeError: 'set' object has no attribute 'items' in django
如果在正文或标题中输入空值,我正在 DRF 中进行自定义以给出错误响应值。 但是,挤压代码后,测试结果出现如下错误。
AttributeError: 'set' 对象没有属性 'items'
我不知道这个错误是什么意思,也不知道为什么会发生。 你能告诉我我的代码有什么问题吗? 这是我的代码。
视图.py
class CreatePostView (ModelViewSet) :
serializer_class = PostSerializer
permission_classes = [IsAuthenticated]
queryset = Post.objects.all()
序列化程序.py
class PostSerializer (serializers.ModelSerializer) :
author = serializers.CharField(source='author.username', read_only=True)
title = serializers.CharField(allow_null=True)
text = serializers.CharField(allow_null=True)
image = ImageSerializer(many=True)
class Meta:
model = Post
fields = ['pk', 'author', 'title', 'text', 'like', 'liker', 'image', 'view']
def validate (self, attrs) :
title = attrs.get('title', '')
text = attrs.get('text', '')
error = {}
if title is None and text is None :
error['message'] = '제목과 본문을 넣어주세요.'
raise serializers.ValidationError(error)
if title is None :
error['message'] = '제목을 넣어주세요.'
raise serializers.ValidationError(error)
if text is None :
error['message'] = '본문을 넣어주세요.'
raise serializers.ValidationError(error)
return attrs
def create (self, validated_data) :
return Post.objects.create(**validated_data)
追溯
Traceback (most recent call last):
File "C:\Users\kurak\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
response = get_response(request)
File "C:\Users\kurak\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\kurak\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\kurak\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "C:\Users\kurak\AppData\Local\Programs\Python\Python38-32\lib\site-packages\rest_framework\viewsets.py", line 102, in view
for method, action in actions.items():
AttributeError: 'set' object has no attribute 'items'
网址.py
from django.urls import path, include
from .views import CreatePostView
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('post', CreatePostView.as_view({'post', 'create'})),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
它应该是{'post':'create'}
而不是{'post', 'create'}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.