代码之家  ›  专栏  ›  技术社区  ›  Adam

django-邮递员登录失败

  •  -1
  • Adam  · 技术社区  · 8 年前

    使用django 2.0.2 mac 10.13 postman 5.5.2

    Web Use
    def login(request):
        form = UserCreateForm
        if request.method == "POST":
            form = UserCreateForm(request.POST)
            if form.is_valid():
               username = form['username'].value()
               password = form['password'].value() 
               user = authenticate(username=username,password=password)
               if user is not None:
                  if user.is_active:
                      login(request, user)
                      return redirect('/')
        else:
            return render(request , 'blog/user_create.html',{'form':form})
    
     Post Man Use
     def login(request):
            if request.POST:
                username = request.POST['username']
                password = request.POST['password']
                user = authenticate(username=username,password=password)
                if user is not None:
                    if user.is_active:
                        login(request, user)
                        return redirect('/')
            return redirect('/')
    
    
    
    error Log
    
    
     File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 923, in to_python
        return int(value)
    ValueError: invalid literal for int() with base 10: 'None'
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/handlers/exception.py", line 35, in inner
        response = get_response(request)
      File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/handlers/base.py", line 128, in _get_response
        response = self.process_exception_by_middleware(e, request)
      File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/handlers/base.py", line 126, in _get_response
        response = wrapped_callback(request, *callback_args, **callback_kwargs)
      File "/Users/junholee/django1/authtest/blog/views.py", line 43, in signin
        login(request, user)
      File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/contrib/auth/__init__.py", line 132, in login
        if _get_user_session_key(request) != user.pk or (
      File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/contrib/auth/__init__.py", line 61, in _get_user_session_key
        return get_user_model()._meta.pk.to_python(request.session[SESSION_KEY])
      File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 928, in to_python
        params={'value': value},
    django.core.exceptions.ValidationError: ["'None' value must be an integer."]
    

    连接127.0.0.1:8000/从web登录(表单)i成功登录 但是

    我试着 http://127.0.0.1:8000/login?username=user1&password=test123 来自邮递员 引发超出此(错误日志)

    在尝试提升超出值后删除COOKIE和缓存

    邮递员使用邮件正文结果

    要求会话[会话\u键]为无

    use JSON

    use form

    1 回复  |  直到 6 年前
        1
  •  1
  •   marc_s MisterSmith    7 年前

    @Sagar 评论中提到,您必须提供 data 如果您使用 POST 方法

    您的请求负载必须如下所示,并将其放入 body 邮递员部分:

    {
        "username":"some_user_name",
        "password":"some secret password"
    }
    

    有关更多详细信息,请参阅我的屏幕截图:

    Screenshot