使用 Django 通过 post 传递值

Posted

技术标签:

【中文标题】使用 Django 通过 post 传递值【英文标题】:Passing values via post with Django 【发布时间】:2011-12-09 18:11:57 【问题描述】:

我正在尝试通过 html/django 创建一个注册表单,因此我有 3 个输入框供用户输入电子邮件、用户名和密码,然后通过 POST 将它们发送到 /adduser

<form action="/OmniCloud_App/adduser" method="post">
% csrf_token %
  Email Address: <input type="text" name="email" /></br>
  Username: <input type="text" name="username" maxlength=25 /></br>
  Password: <input type="password" maxlength=30 /></br>
  </br>
  <input type="submit" value="Send" /> <input type="reset">
</form>

adducer 创建一个新用户并将其保存到数据库中:

def adduser(request, email, username, password):
    u = User(email=email, username=username, password=password)
    u.save()
    return render_to_response('adduser.html', 'email':email, 'username':username, 'password':password)

但是当我在 /signup 上单击提交时,它抱怨我只给它 1 个参数,而预期为 3。我应该如何将 signup.html 中的电子邮件、用户名和密码字段传递给用户名函数(位于 /username)?

【问题讨论】:

【参考方案1】:

它们将位于request.POST,您可以像查询dict 一样查询它

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

【讨论】:

您要查找的单词是"mapping"。 但是如何填充 POST?【参考方案2】:

如果您阅读part 3 of the tutorial,您会看到视图函数需要部分 URL 本身作为参数。如果您阅读part 4 of the same tutorial,您会看到POST 参数是通过request.POST 传入的。在文档的进一步内容中,您将了解到您可以编写表单类来处理 HTML 表单的生成和验证。

【讨论】:

好的,所以我使用了它,但现在它说密码不是 POST 请求的一部分,但它似乎确实有电子邮件、用户名和一个叫做 csrfmiddlewaretoken 的时髦东西。为什么它不发送表单的密码字段? 因为你忘了给它起个名字。这是使用 Django 表单的另一个原因。 你太好了。我将研究表单类,只是想先通过该死的教程哈哈。非常感谢!

以上是关于使用 Django 通过 post 传递值的主要内容,如果未能解决你的问题,请参考以下文章

django:通过 HttpResponseRedirect 传递发布的文件

Django:将模板值发布到视图

如何将 POST 数据中的 CSRF 令牌传递给 Django?

通过jQuery ajax调用将值列表传递给django视图

Redux-form 通过 POST 请求传递数据。

Django 2021年最新版教程12GET POST请求参数 如何接收判空默认值