개발일지 6일차 | 파이썬기초-flask

1. 학습한 내용

-Flask는 웹페이지를 찍어내는 공장
플라스크가 만들어내는 웹페이지는 제품과 같다.

Flask

flask.palletsprojects.com

설치
터미널-새터미널-pip install flask

Quick start-A minimal Application

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>"
    
app.run()

cd python
exit() clear

python 10.flask.py
running on http://
-> 뭘해도 'hello world'가 출력되는 웹서버 만들기

glitch.com
검색-선택-view source-remix your own-server.py
preview - open preview pane - 옆에 활동창 띄움
start.sh - glitch에 시작 페이지.
glitch에서 python은 python2를 의미 -> python3 server.py로 실행

기존에 작성한 코드를 복사 후 glitch에 붙여놓고 hello world가 뜨는지 확인.

[참고
웹브라우저 - 웹서버(html files)
flask를 동작시,
WB - server.py를 python으로 실행 -> 실현
파일이 프로그램 = 어떻게 시간의 순서에 따라 실행 시킬지 적혀있는 것
실행시키면 실행중인 것이 프로세스
프로세스가 하는 역할이 웹서버(application server)]

접속할 때마다 랜덤한 정보 출력시,

import random

app = Flask(__name__)

@app.route("/")
def hello_world():
    return str(rnadom.rnadom())
    
app.run()

reload 할 때마다 랜덤한 수 출력

return '<strong>random</strong> :'+str(rnadom.rnadom())

으로 작성시,

random :0.2345678

server.py 실행시 프로세스 실행 -> application server
front end : client side technology
back end : server side technology
php
java
nodejs

Web Frame work
작업시 주소=입력값으로 Routing(->Router)이 어떻게 되어 있는지 고려해야 함

form flask import Flask

app = Flask(__name__)

@app.route("|")
def index():
	return 'Home'
    
@app.route('/create/')
def create():
	return 'Create'

@app.route('/update/')
def update():
	return 'update'
    
app.run()

여기에 기존에 해오던 html코드를 return 옆에 '''을 넣고 코드를 작성한다.(끝에 ''')
실행

리스트와 딕셔너리를 조합해서 python 작성.

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":"js", "body":"js is ...."}
]

def template(content):
  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>
      </ul>
    </body>
  </html>
  '''

@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}')

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

app.run()

2. 어려웠던 점

이해가 전혀 되지 않는다.
집중을 하려 노력했으나 무슨 말인지 모르고 그저 실습을 따라가고만 있다. 강사님께선 천천히 설명해 주시지만 이게 뭐하는 코드인지도 인식하지 못하고 손만 움직이고 있다.

3. 해결방법

해결방법을 모르겠다.
이해가 되지 않아 강의를 다시 들었지만 내가 다시 사용할 수 있을지 모르겠다.
오늘 이후 다시 복습해 봐야겠다.

4. 학습소감

여태 한 수업은 '따라가기 부담스럽다' 정도였다면 이건 '따라가기 힘들다'였다.
그냥 무슨 말인지 잘 모르겠다. 수업을 진행하는 방식이 나에게 맞지 않는 것인지, 오늘 그냥 머리가 잘 돌아가지 않는 날이지 손은 움직이지만 이해는 되지 않은 상황에서 시간만 흘려 보내고 있다.

좋은 웹페이지 즐겨찾기