본문 바로가기
인공지능/PYTHON

Flask

by bibibig_data 2021. 6. 22.

모듈

 

함수 코드를 .py 형태로 저장.

import 파일명

이름 바꾸기 : import  파일명 as 바꿀 파일명

dir : 모듈에 있는 모든 함수 이름 나열

 

CSV vs JSON vs TSV vs XML 

csv -> 자료가 없으면 행 자체에 오류 범할 가능성이 있음. 다양한 형태 지원 x

xml, json -> csv 단점 보완 but 덩치를 크게함.

그래서 java script 언어를 이용한 json을 이용해 파씽 ??

 

 

findall -> 해당 값 모두 찾음

search -> 

split -> 구분

sub -> 대체 

span -> 시작과 끝 위치 반환

 

 

웹 개발 로드맵

 

플라스크 : 백작 (백) 진자 (프론트)

 

 


Flask

 

1. c드라이브 - dev - flaskintro폴더 생성 - satic폴더와 templates 폴더와 app.py 텍스트파일 만들기

2. atom에서 add project folder 에서 flaskintro 지정 후 코드 입력

from datetime import date, timedelta
from flask import Flask

app = Flask(__name__)


@app.route('/')
def index():
    return 'Hello World!'

    
@app.route('/andong')
def abcd():
    return 'Hello Andong National University!'
    
@app.route('/txt')
def read_txt():
    f = open('static/test.txt','r', encoding='UTF8')
    return "</br>".join(f.readlines())


@app.route('/today/')  # /today 및 /today/로 접근 가능
def today():
    return f'오늘은 {date.today()}입니다.'


def add7days():
    return f'일주일 뒤는 {date.today() + timedelta(days=7)}입니다.'

app.add_url_rule('/7dayslater/',  # rule      : the URL rule as string
                 '',              # endpoint  : the endpoint for the registered URL rule. Flask itself assumes the name of the view function as endpoint
                  add7days)       # view_func : the function to call when serving a request to the provided endpoint


if __name__ == '__main__':
    app.run(debug=True)

 

3. termius 활성화 후 창에서 ctrl+c -> python app.py 입력

4. ip주소를 alt + c로 복사 후 인터넷에서 실행. 루트에 맞게 이름 변경 

 

예제2 

from flask import Flask, render_template, request, redirect, url_for
app = Flask(__name__)


@app.route('/')
def index():
    return 'Hello World!'


@app.route('/login/')
def login():
    return render_template('login.html')


@app.route('/success/<name>')
def success(name):
    return 'welcome %s' % name


@app.route('/auth', methods=['POST', 'GET'])
def auth():
    if request.method == 'POST':
        user = request.form['nm']
        return redirect(url_for('success', name=user))
    else:
        user = request.args.get('nm')
        return redirect(url_for('success', name=user+' by Get'))


if __name__ == '__main__':
    app.run(debug=True)

- ctrl + ` = 밑에 창 열었다 닫았다

 


예제 3 ) 로그인

 

app.py

from flask import Flask, render_template, request, redirect, url_for
app = Flask(__name__)


@app.route('/')
def index():
    return 'Hello World!'


@app.route('/login/')
def login():
    return render_template('login.html')


@app.route('/success/<name>')
def success(name):
    return 'welcome %s' % name


@app.route('/auth', methods=['POST', 'GET'])
def auth():
    if request.method == 'POST':
        user = request.form['nm']
        return redirect(url_for('success', name=user))        
    else:
        user = request.args.get('nm')
        return redirect(url_for('success', name=user+' by Get'))


if __name__ == '__main__':
    app.run(debug=True)

 

login.html

<html>
   <body>
      <form action = "http://localhost:5000/auth" method = "post">
         <p>Enter Name:</p>
         <p><input type = "text" name = "nm" /></p>
         <p><input type = "submit" value = "submit" /></p>
      </form>
   </body>
</html>

 

- 서버에 /login 입력

- 안바뀔때 ctrl + shift + r

- flask에서 if,for문 쓸때는 fif, ffor로 검색

 


예제 4

프로젝트 파일 설정


 

예제 4-1)

app.py

from flask import Flask
app = Flask(__name__)


@app.route('/')
def index():
    return '<html><body><h1>Hello World</h1></body></html>'

    
if __name__ == '__main__':
    app.run(debug=True)

- {%...%}  if

- {{...}}  출력

- {#...#}

 


예제 4-2) hello

 

hello.html

<!doctype html>
<html>
  <body>

    <h1>Hello {{ name }}!</h1>

  </body>
</html>

app.py

from flask import Flask, render_template
app = Flask(__name__)


@app.route('/')
def index():
    return '<html><body><h1>Hello World</h1></body></html>'

    
@app.route('/hello/<user>')
def hello_name(user):
    return render_template('hello.html', name = user)

    
if __name__ == '__main__':
    app.run(debug=True)

 


예제 4-3) marks

 

marks.html

<!doctype html>
<html>
  <body>
    {% if marks > 50 %}   # fife 엔터
    <h1> 다음 단계로 이동할 수 있음 </h1>
    {% else %}
    <h1> 다음 단계로 이동할 수 없음 </h1>
    {% endif %}
  </body>
</html>

app.py

from flask import Flask, render_template
app = Flask(__name__)


@app.route('/')
def index():
    return '<html><body><h1>Hello World</h1></body></html>'


@app.route('/hello/<user>')
def hello_name(user):
    return render_template('hello.html', name = user)


@app.route('/marks/<int:score>')
def marks(score):
   return render_template('marks.html', marks = score)

    
if __name__ == '__main__':
    app.run(debug=True)

 


예제 4-4) result

 

result

<!doctype html>
<html>
<body>
  <table border=1>
    {% for key, value in result.items() %}
    <tr>
      <th> {{ key }} </th>
      <td> {{ value }} </td>
    </tr>
    {% endfor %}
  </table>
</body>
</html>

app.py

from flask import Flask, render_template
app = Flask(__name__)


@app.route('/')
def index():
    return '<html><body><h1>Hello World</h1></body></html>'

    
@app.route('/result')
def result():
    dict = {'phy': 50, 'che': 60, 'maths': 70}
    return render_template('result.html', result=dict)


if __name__ == '__main__':
    app.run(debug=True)

 

'인공지능 > PYTHON' 카테고리의 다른 글

크롤링 (2)  (0) 2021.06.23
Flask 2  (0) 2021.06.22
Python 300제 - 함수  (0) 2021.06.18
Python - w3schools  (0) 2021.06.18
파이썬 300제 (2) 51~  (0) 2021.06.17