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 %}

sourcesされたobjects.all()Djangoのモデルのビューで参照されています。「開始」送信入力がクリックされるたびに、{{ source.title}}レンダリングされたページを返す前に、「開始」ビューで関数内のデータを使用する必要があります。Python変数にPOSTされた情報(この場合は非表示の入力)を収集するにはどうすればよいですか?

回答:


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のフォームを使用inputし、ちょうど{{ form }}、私のフォームはのみ1つのテキスト入力(CharFieldです)を持っています。どうすればそのデータにアクセスできますか?
Nitwit

13

フロントエンドで何かを行う必要がある場合は、フォームのonsubmitイベントに応答できます。admin / startに投稿するだけの場合は、リクエストオブジェクトを介してビューの投稿変数にアクセスできます。投稿変数の辞書であるrequest.POST


もう1つの回答は、質問する前に質問する予定の問題(名前/値の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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.