[python] form 태그로 직접 insert를 해보자
본문 바로가기

Backend

[python] form 태그로 직접 insert를 해보자

form 태그로 insert를 하려면 action과 자바스크립트로 연결?하면된다는데..

 

action: 폼이 제출될때 처리가 필요한 데이타를 전달 받는곳의 url주소. 빈문자열일경우 현재 페이지 url로 다시 제출

method: 데이터를 보내는데 사용되는 HTTP메소드로 POST(관련데이터에의해 서버데이터가 변경될경우)와

GET(사용자 데이터를 변경하지 않는 폼. 탐색폼, 북마크, 공유하기 등)이 있다.

 

1. 준비

회원가입폼이나 만들고싶은 폼 마크업준비

 

2. form action, method, name값 채워넣기

			<form action="/insert_qr" method="post">
				<div class="inputWrap">
					<div class="ui input" style="width: 100%;">
						<div class="field">
							<input type=number name="qr_quantity" placeholder="추가할 기기 수량을 입력하세요"></input>
						</div>
					</div>
				</div>
			<div class="inputWrap">
				<button type="submit" class="button mint large">등 록</button>
				<button class="button grey border" style="width: calc(100% - 10px); margin-left: 10px;">취 소</button>
			</div>
			</form>

 

3. 컨트롤러 만들기

/insert_qr을 매핑하는 route함수를 만들고 매서드는 동일한 POST로 지정해준다.

form에서 name값 qr_quantity를 가져와서 숫자일경우에만 db엔진과 연결되도록한다.

db에 저장이 완료되면 목록화면으로 리다이렉트 처리해준다

def register_qr(manager):
	@manager.route('/qr_list')
	def qr_list():
		''' 기기관리 목록 화면 '''
		data = query_qr_list()
		return render_template('qr_list.html', data=data)

	@manager.route('/insert_qr', methods=['POST'])
	def insert_qr():
		qr_quantity = request.form.get('qr_quantity')
		if qr_quantity.isdigit() == True:
			# db에 저장
			insert_qr_num(qr_quantity)

		return redirect(url_for('manager.qr_list'))

 

4. 모델 만들기

db엔진을 만들어서 연결에 성공하면 cursor객체를 만들고 쿼리문 실행

def insert_qr_num(qr_quantity):
	database = connect_database()
	connection = None
	cursor = None

	if database == None:
		return None

	try:
		connection = database.raw_connection()
	except:
		return None

	try:
		cursor = connection.cursor()
	except:
		return None
	query = f"""CALL sp_generate_qr({qr_quantity});"""

	try:
		cursor.execute(query)
		connection.commit()
	except:
		return {'resultCode': 500, 'resultMsg': 'query execution fail!'}

	return {'resultCode': 200, 'resultMsg': 'success'}

 

주의할점

  • Form 태그의 method는 GET과 POST만 된다.
  • button과 input태그안 type="submit" 은 사용할경우 ajax가 통하지않는다.
  • input 태그안 name에 값을 적어야 서버가 값을 받아올수있음.(name과 id의 차이 구별!)
  • name값과 id값은 동일하게하고 데이터베이스에서 명시한 명을 따라야 추후 혼란을 방지함
  • 쿼리문 실행후 커밋을 반드시 해준다.(connection.commit())

 

 

https://donggu1105.tistory.com/61

 

[HTML] form 태그에서 PUT, DELETE 방식으로 Submit 하기

REST방식으로 API를 설계할때 GET, POST말고도 수정 이나 삭제할경우는 PUT, DELETE를 써야하는데 form 태그 method에 아무리 PUT,DELETE 써봤자 GET방식으로 들어간다! DAMN 왜냐하면, HTML form태그가 GET,POST..

donggu1105.tistory.com

 

반응형