1

AttributeError("'WSGIRequest' object has no attribute 'args'",) 当我尝试拨打这个电话时,我得到了这个

GET /sign_s3/?s3_object_type=image/jpeg&s3_object_name=default_name

我错过了什么吗?

*args, **kwargs除了请求之外,我还需要包括吗?

这是回溯:

            response = middleware_method(request, callback, callback_args, callback_kwargs)
            if response:
                break
    if response is None:
        wrapped_callback = self.make_view_atomic(callback)
        try:
            response = wrapped_callback(request, *callback_args, **callback_kwargs) ...
        except Exception as e:
            # If the view raised an exception, run it through exception
            # middleware, and if the exception middleware returns a
            # response, use that. Otherwise, reraise the exception.
            for middleware_method in self._exception_middleware:
                response = middleware_method(request, e)

风景:

@login_required()
def sign_s3(request):
    object_name = request.args.get('s3_object_name') 
4

3 回答 3

5

HttpRequest对象没有args属性。

你应该使用

request.GET.get('s3_object_name')

得到s3_object_name value.

Django 文档中有一个关于HttpRequest.

于 2014-01-16T21:37:12.083 回答
0

HttpRequest 对象具有类字典对象 id 没有 args 属性

如果密钥是强制性的并且存在于请求对象中,您可以使用:

request.GET['s3_object_name']

如果键存在,这将返回一个值。如果不是,则异常

如果您的密钥是可选的:

request.GET.get('s3_object_name')

于 2018-05-06T09:35:31.213 回答
0

与此错误相同:除了 User.DoesNotExist:属性错误:'function' 对象没有属性'DoesNotExist'

class UserPosts(generic.ListView):
   model = models.Post
   template_name = 'posts/user_post_list.html'

def get_queryset(self):
    try:
        self.post_user = User.objects.prefetch_related("posts").get(
            username__iexact=self.kwargs.get("username")
        )
    except User.DoesNotExist:
        raise Http404
    else:
        return self.post_user.posts.all()

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    context["post_user"] = self.post_user
    return context

我通过以下方式解决它:

从 django.contrib.auth 导入 get_user_model

用户 = get_user_model()

于 2020-04-14T16:39:39.420 回答