【问题标题】:did request.POST['choice'] returns an Integer确实 request.POST['choice'] 返回一个整数
【发布时间】:2020-12-23 07:32:47
【问题描述】:

我正在学习 django,你能帮我解决这个问题吗

selected_choice=question.choice_set.get(pk=request.POST['choice'])

selected_choice.votes+=1

这里,selected_choice 持有一个特定的选择对象,但 request.POST['choice] 的功能是什么我对此感到困惑

【问题讨论】:

  • choice 可以是任何东西,这取决于您的表单发送的内容
  • 所以它就像模板中所说的那样对吗?
  • 通过 request.POST 访问的数据将始终是字符串。您应该使用 Django 表单来处理验证和转换,如果您使用 forms.IntegerField,它会将数据转换为整数
  • 我没有在应用程序中使用任何表单,只是模板,所以它就像模板中所说的一样,对吧? ----你能解释一下这里发生了什么...... *forloop.counter 表示for标签循环了多少次template

标签: django django-orm


【解决方案1】:

如果您通过 post 方法提交表单,您将能够使用 request.POST(这是 python 中的字典)访问您在表单中提交的所有数据。 因为<input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}">name="choice" 字典有一个名为choice 的键,它保存了选择id 的值(因为你已经设置了value="{{ choice.id }}

所以 request.POST['choice'] 给你选择的 id。 pk 代表主键。所以get(pk=request.POST['choice']) 为您提供了选择对象,它的 pk(默认为 id)等于您从表单中返回的选择 id。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 2016-07-10
    • 1970-01-01
    • 2017-09-20
    相关资源
    最近更新 更多