장고에서 하나의 html template 안에 form 이 여러개 있을 때, 각 form 의 데이터를 모두 받아오는 방법이 필요했다.
장고 내에서는 FBV 방식으로 html 을 render 해주는 방식을 사용했고, html 코드 내의 form 은 다음 코드와 비슷하게 구현된 상태였다.
<form method="post">
{% csrf_token %}
<button type='submit' name='form1'> Submit </button>
</form>
<form method="post">
{% csrf_token %}
<button type='submit' name='form2'> Submit </button>
</form>
처음에는 특정 버튼을 누르면 해당 form 의 데이터만 전송해야하나 생각했는데, 그렇지 않았다. 그냥 지금 form 에 입력된 데이터를 한번에 request 로 자동으로 가져올 수 있었다. views.py 내의 FBV 함수에서 request 를 열어보니 { .., 'form1' : ... , 'form2' : ... }딕셔너리 형태로 데이터가 전송되고 있었다. 그래서 request 에서 form submit 을 받은 딕셔너리의 키가 존재하는지 체크하는 방식으로 구현했다.
def update_machine_view(request, brand_name_slug, mclass_slug, profile_slug):
model = ....
obj = 필요한 오브젝트 데이터들을 불러오는 쿼리셋 코드
if request.method == 'POST' and 'form1' in request.POST:
form1_data = obj.filter....
if request.method == 'POST' and 'form2' in request.POST:
form2_data = obj.filter....
context = {
'form1_data': form1_data,
'form2_data': form2_data,
}
return render (request,
"../blahblah.html",
context)
#참조
Multiple Django Forms in Single View: Why Does One POST Clear Other Forms?
'개발 > 웹' 카테고리의 다른 글
[Django] Ajax 로 비동기 통신하기 (0) | 2022.04.26 |
---|---|
[Plotly.js] 2,3차원 공간에서 x, y, z 좌표 연결 시각화 (0) | 2022.04.22 |
[Django] ForeignKey 참조하는 다수의 objects 가져오기 (0) | 2022.04.14 |
[JavaScript] form, input 엔터키 이벤트 안되는 문제 (0) | 2022.04.04 |