【问题标题】:Post parameters missing in django viewdjango 视图中缺少发布参数
【发布时间】:2017-08-09 19:57:15
【问题描述】:

我在 django 中创建了一个小型 Web 应用程序,我在其中发送带有参数的发布请求。我可以清楚地看到 django 日志中 url 中存在的那些参数,但在视图中这些参数丢失了。

网址:[18/Mar/2017 12:04:18] "POST /login/?email=bla@gmail.com&Password=******** HTTP/1.1" 200 20 视图.py:

if request.method == 'POST':
    for x in request.POST:
        print(x)
    email = request.POST.get("email","")
    Password = request.POST.get("Password", "")
    print("email: {0}, password:{1}".format(email, Password))

【问题讨论】:

  • 如果以下答案帮助您解决了您的问题,请标记为已接受

标签: python django


【解决方案1】:

POST 参数在 URL 中传递,但 GET 参数可以。

试试这个:

if request.method == 'GET':
    for x in request.GET:
        print(x)
    email = request.GET.get("email","")
    password = request.GET.get("Password", "")
    print("email: {0}, password:{1}".format(email, password))

另外,由于每次访问视图都是一个GET,所以没有理由做if request.method == 'GET':。但这是另一个问题。

【讨论】:

  • 你说得对,POST中的参数不应该在url中。看起来问题出在我用来发送请求的 POSTMAN chrome 应用程序上。在使用 python requests api 时它起作用了。
【解决方案2】:

您的请求不是 POST,因为请求参数是在您的 GET 上下文中传递的。尝试通过传递来检查您的<form method='POST'> 格式是否正确以发送帖子,以及您的视图函数是否只接受 POST 方法:

from django.views.decorators.http import require_http_methods

@require_http_methods(["POST"])
def myview(request):

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 2017-12-19
    • 2019-09-09
    • 1970-01-01
    相关资源
    最近更新 更多