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
반응형
'Backend' 카테고리의 다른 글
[flask 회원1] 테이블만들기 (0) | 2021.07.16 |
---|---|
[flask 기초2] SQLAlchemy (0) | 2021.07.16 |
python execute() 메소드 예제 (0) | 2021.07.08 |
[오류][해결] attributeerror 'nonetype' object has no attribute 'get' (0) | 2021.07.07 |
파이썬 빠른테스트 (0) | 2021.07.07 |