다음 장고 템플릿이 있습니다 (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 변수로 수집하려면 어떻게해야합니까?
답변
뷰가 수신하는 요청 객체에 대해 읽어보십시오 : https://docs.djangoproject.com/en/dev/ref/request-response/#httprequest-objects
또한 숨겨진 필드에는 신뢰할 수있는 이름과 값이 필요합니다.
<input type="hidden" name="title" value="{{ source.title }}">
그런 다음보기에서 :
request.POST.get("title", "")
답변
프런트 엔드에서 작업을 수행해야하는 경우 양식의 onsubmit 이벤트에 응답 할 수 있습니다. 관리자 / 시작에 게시하는 경우 요청 개체를 통해보기에서 게시 변수에 액세스 할 수 있습니다. post 변수의 사전 인 request.POST
답변
장고 양식의 경우 이렇게 할 수 있습니다.
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))