kaki1013
4. 쓰기 기능 구현 (1) 본문
# 쓰기 칸 만들기
1. 예시 코드
from flask import Flask
app = Flask(__name__)
topics = [
{'id': 1, 'title': 'html', 'body': 'html is ...'},
{'id': 2, 'title': 'css', 'body': 'css is ...'},
{'id': 3, 'title': 'javascript', 'body': 'javascript is ...'}
]
def template(contents, content):
return f'''<!doctype html>
<html>
<body>
<h1><a href="/">WEB</a></h1>
<ol>
{contents}
</ol>
{content}
<ul>
<li><a href="/create/">create</a></li>
</ul>
</body>
</html>
'''
def getContents():
liTags = ''
for topic in topics:
liTags = liTags + f'<li><a href="/read/{topic["id"]}/">{topic["title"]}</a></li>'
return liTags
@app.route('/')
def index():
return template(getContents(), '<h2>Welcome</h2>Hello, WEB')
@app.route('/read/<int:id>/')
def read(id):
title = ''
body = ''
for topic in topics:
if id == topic['id']:
title = topic['title']
body = topic['body']
break
return template(getContents(), f'<h2>{title}</h2>{body}')
@app.route('/create/')
def create():
"""
제목과 같은 text 정보를 서버로 전송할 때
사용자로부터 입력을 받는 태그 input
& 속성 type="text" & 해당 칸에 어떤 정보를 입력하는지 보여주는 속성 placeholder
본문처럼 여러 줄을 입력받는 태그 textarea
각각을 단락으로 구분하는 태그 p
입력받은 text 정보가 서버로 전송될 때 사용될 이름을 지정하는 속성 name
작성을 완료하고 서버로 전송할 때 필요한 버튼의 태그 input
& 속성 type="submit" & 버튼의 label을 보여주는 속성 value
서버로 전송할 사용자의 입력 정보를 그룹핑하는 태그 form
& 서버의 어떤 경로로 전송할지 지정하는 속성 action & 전송할 메소드 지정하는 속성 method
"""
content = '''
<form action="/create/" method="POST">
<p><input type="text" name="title" placeholder="title"></p>
<p><textarea name="body" placeholder="body"></textarea></p>
<p><input type="submit" value="create"></p>
</form>
'''
return template(getContents(), content)
app.run(debug=True)
2. 요약
- 서버로 전송할 사용자의 입력 정보 → form 태그로 그룹핑
- <input type="submit"> 버튼 → form 태그 안의 입력 정보를, form의 action 속성으로, method 방식을 통해 전송
- <form method="XXX">
GET일 때 = 브라우저가 서버의 정보를 가져올 때 사용, POST = 브라우저가 서버의 정보를 변경할 때 사용
- GET 방식 : URL을 통해서 입력 정보가 전달 → 입력 정보가 노출 & 길어질 경우 오류 발생 가능
동적으로 동작하는 웹 서비스에서 특정한 페이지를 식별하는 고유한 주소로서 사용
- POST 방식 : http 통신의 body를 통해서 전송됨 → 입력 정보가 감춰짐 & 대용량의 데이터를 전송 가능
정보를 바꿀 때는 URL 안에 데이터가 들어가 있으면 안됨 -> 감추는 방식 : POST
- 위의 코드는 글을 작성하고 제출해도, METHOD NOT ALLOWED라는 오류 메시지가 뜸
'버그바운티 스터디 > FLASK' 카테고리의 다른 글
6. 수정 기능 구현 (0) | 2023.07.26 |
---|---|
5. 쓰기 기능 구현 (2) (0) | 2023.07.22 |
3. 읽기 기능 구현 (0) | 2023.07.21 |
2. 홈페이지 구현 (0) | 2023.07.21 |
1. Routing (0) | 2023.07.21 |