【问题标题】:Django - taking values from POST requestDjango - 从 POST 请求中获取值
【发布时间】:2012-07-05 09:33:23
【问题描述】:

我有以下 django 模板(http://IP/admin/start/ 分配给一个名为 view 的假设视图):

{% for source in sources %}
  <tr>
    <td>{{ source }}</td>

    <td>
    <form action="/admin/start/" method="post">
      {% csrf_token %}
      <input type="hidden" name="{{ source.title }}">
      <input type="submit" value="Start" class="btn btn-primary">
    </form>
    </td>

  </tr>
{% endfor %}

sources 是视图中引用的 Django 模型的 objects.all()。每当单击“开始”提交输入时,我希望“开始”视图在返回渲染页面之前在函数中使用{{ source.title}} 数据。如何将已发布的信息(在本例中为隐藏输入)收集到 Python 变量中?

【问题讨论】:

    标签: python django post


    【解决方案1】:

    如果您需要在前端做一些事情,您可以响应表单的 onsubmit 事件。如果您只是发布到管理员/开始,您可以通过请求对象访问视图中的发布变量。 request.POST 是 post 变量的字典

    【讨论】:

    • 另一个答案帮助我解决了我要问你的一个问题(名称/值 html 选择器的定义),所以我会继续并标记它已接受。不过感谢您的帮助。 :)
    【解决方案2】:

    了解您的视图收到的请求对象:https://docs.djangoproject.com/en/dev/ref/request-response/#httprequest-objects

    您的隐藏字段还需要一个可靠的名称,然后是一个值:

    <input type="hidden" name="title" value="{{ source.title }}">
    

    然后在一个视图中:

    request.POST.get("title", "")
    

    【讨论】:

    • 我使用 Django 表单,我没有独立的 input,只有一个 {{ form }},而且我的表单只有一个文本输入(字符域)。我如何访问它的数据?
    • @Nitwit name 属性将是您分配字符字段的属性的名称。如果您不是 100% 在加载表单的浏览器中按 F12 并选择 input 元素以查看 Django 赋予 name 属性的内容。
    【解决方案3】:

    对于 django 表单,您可以这样做;

    form = UserLoginForm(data=request.POST) #getting the whole data from the user.
    user = form.save() #saving the details obtained from the user.
    username = user.cleaned_data.get("username") #where "username" in parenthesis is the name of the Charfield (the variale name i.e, username = forms.Charfield(max_length=64))
    

    【讨论】:

    • 答案中的UserLoginForm是表单的名称
    猜你喜欢
    • 2020-08-16
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 2016-03-09
    相关资源
    最近更新 更多