Django-从POST请求中获取值


83

我有以下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 %}

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

Answers:


143

阅读有关您的视图收到的请求对象的信息:https : //docs.djangoproject.com/en/dev/ref/request-response/#httprequest-objects

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

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

然后在视图中:

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

我使用的Django Forms没有独立的input,只有一个,{{ form }}并且我的表单只有一个文本输入(charfield)。如何访问其数据?
Nitwit

13

如果您需要在前端执行某些操作,则可以响应表单的onsubmit事件。如果您只是发布到admin / start,则可以通过请求对象在视图中访问发布变量。request.POST,它是发布变量的字典


另一个答案帮助我解决了一个在我问之前要问您的问题(名称/值html选择器的定义),因此,我将继续标记该问题为已接受。谢谢您的帮助。:)
Randall Ma

2

对于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是表单的名称
Irfan wani
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.