Django-POST 요청에서 값 가져 오기


84

다음 장고 템플릿이 있습니다 (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는 IS objects.all()장고 모델의 뷰에서 참조된다. "시작"제출 입력을 클릭 할 때마다 "시작"뷰가 {{ source.title}}렌더링 된 페이지를 반환하기 전에 함수 의 데이터 를 사용하기를 원합니다 . 게시 된 정보 (이 경우 숨겨진 입력)를 Python 변수로 수집하려면 어떻게해야합니까?

답변:


145

뷰가 수신하는 요청 객체에 대해 읽어보십시오 : 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적이고 a {{ form }}만 있고 양식에는 텍스트 입력 (charfield)이 하나만 있습니다. 데이터에 액세스하려면 어떻게해야합니까?
Nitwit

@Nitwit name속성은 charfield를 할당 한 속성의 이름입니다. 100 %가 아닌 경우 양식이로드 된 브라우저에서 F12를 누르고 입력 요소를 선택하여 Django가 이름 속성을 제공 한 내용을 확인합니다.
James Bellaby

13

프런트 엔드에서 작업을 수행해야하는 경우 양식의 onsubmit 이벤트에 응답 할 수 있습니다. 관리자 / 시작에 게시하는 경우 요청 개체를 통해보기에서 게시 변수에 액세스 할 수 있습니다. post 변수의 사전 인 request.POST


다른 답변은 내가 요청하기 전에 물어볼 문제 (이름 / 값 html 선택기의 정의)를 해결하는 데 도움이되었으므로 계속 진행하여 수락 된 것으로 표시하겠습니다. 그래도 도와 ​​주셔서 감사합니다. :)
Randall Ma

2

장고 양식의 경우 이렇게 할 수 있습니다.

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 폼의 이름입니다
이르판은 와니
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.