flack와 python문법을 이용한 html

연가을·2022년 3월 31일
0
post-custom-banner

오늘의 수업내용

어제 수업에 함수화로 정리 된 html 문서에 게시글을 작성하고 그 게시글을 지우는 방법에 대하여 수업이 진행 되었다.

어려운점 및 해결 내용

사실 어제와 오늘은 본인이 이해하기에는 매우 어려운 분야였고 어느정도를 이해했는지도 가늠이 되지 않는다.

어제와 오늘 작성한 코드를 보면서 내가 이해한 부분은 어디이고 이해하지 못한 부분은 어디인지를 보려한다.

from flask import Flask, request, redirect /

=> flask 프로그램을 이용하고 request,redirectet 내장된 기능을 사용한다.

app = Flask(__name__)

topics = [
  {"id":1, "title":"html", "body":"html is ...."},
  {"id":2, "title":"css", "body":"css is ...."},
  {"id":3, "title":"js", "body":"js is ...."}
] 

=> 'topics'라는 다항 리스트를 작성한다. 연결된 모든 html 문서에 반복적으로 들어가는 내용으로 데이터화 하여 for in 과 if문을 사용하여 html문서에 넣는다.

nextId = 4

def template(content, id=None):

=> template이라 정의하여 공통으로 들어가는 html 문서를 만듬

  liTags = ''
  for topic in topics:
    liTags = liTags + f'<li><a href="/read/{topic["id"]}/">{topic["title"]}</a></li>'
  return f'''
  <html>
    <body>
      <h1><a href="/">WEB</a></h1>
      <ol>
        {liTags}
      </ol>
      {content}
      <ul>
        <li><a href="/create/">create</a></li>
        <li>
          <form action="/delete/{id}/" method="POST">
            <input type="submit" value="delete">
          </form>
        </li>
      </ul>
    </body>
  </html>
  '''

** @app.route("") : ("")안에 있는 url를 연경하여 이동하게 해준다.

@app.route("/")
def index():
  return template('<h2>Welcome</h2>Hello, WEB!')

@app.route("/read/<int:id>/")
def read(id):
  title = ''
  body = ''  
  for topic in topics :
    if topic['id'] == id:
      title = topic['title']
      body = topic['body']
      break;
  return template(f'<h2>{title}</h2>{body}', id)

@app.route('/create/')
def create():
  content = '''
    <form action="/create_process/" 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(content)

@app.route('/create_process/', methods=['POST']) 
                              =>post 방식으로 값을 받음
def create_process():
  global nextId
  title = request.form['title']
  body = request.form['body']
  newTopic = {"id":nextId, "title": title, "body": body}
  topics.append(newTopic)
  nextId = nextId + 1
  return redirect(f'/read/{nextId-1}/')


@app.route('/delete/<int:id>/', methods=['POST'])
def delete(id):
  for topic in topics:
    if topic['id'] == id:
      topics.remove(topic)
      break;
  return redirect('/')
 
# @app.route('/update/')
# def update():
#   return 'Update'
 

app.run()

소감

사실 어제와 오늘은 그동안 내가 배웠던 python 문법이 flask에서 이런 방식으로 사용이 되고 있다 정도만 이해가 되는거 같다.

post-custom-banner

0개의 댓글