'WSGIRequest'对象没有属性'get'

时间:2015-02-14 12:07:57

标签: django python-2.7

我正在尝试使用Django创建一个登录表单。我正在创建一个视图女巫将处理get和post登录请求。

这是我设计的方式:

class Login(View):
    def get(self,request):
        c = {}
        c.update(csrf(request))
        return render_to_response("login.html", c)
    def post(self,request):
        username = request.get('username','')
        password = request.get('password','')
        user = auth.authenticate(username = username, password = password)
        if(user is not None):
            auth.login(request,user)
            return True
        else:
            return False

我可以获得这个表格,但是当我发布时我得到了:

'WSGIRequest' object has no attribute 'get'

错误。设计此类视图的正确方法是什么?

5 个答案:

答案 0 :(得分:10)

您应该使用request.POST类似dict的对象:

username = request.POST.get('username','')
password = request.POST.get('password','')

答案 1 :(得分:1)

我看到了同样的错误,因为我写了这样的装饰器:

from functools import wraps

def require_authenticated(view_function):
    @wraps
    def wrapped(request, *args, **kwargs):
        if not request.user.is_authenticated:
            return JsonResponse({"detail": "User is not authenticated"}, status=403)
        return view_function(request, *args, **kwargs)
    return wrapped

这里的问题是使用内置functools.wraps(返回装饰器)的方式,解决方法是将view函数传递给它,如下所示:

from functools import wraps

def require_authenticated(view_function):
    @wraps(view_function)  # <- this is the fix!
    def wrapped(request, *args, **kwargs):
        if not request.user.is_authenticated:
            return JsonResponse({"detail": "User is not authenticated"}, status=403)
        return view_function(request, *args, **kwargs)
    return wrapped

答案 2 :(得分:0)

您应将其用于Get方法,否则应在python 3中将Post用于post方法

  username = request.GET.get('username','')
  password = request.GET.get('password','')

答案 3 :(得分:0)

**value1=int(request.GET['num1'])
value2=int(request.GET['num2'])**

如果您使用的是 Python 3.9 版,请使用 GET

答案 4 :(得分:-1)

我遇到了同样的问题。尝试编写“ GET”而不是“ get”。希望它能解决。

username = request.GET('username','')
password = request.GET('password','')