03.30 Java 3

15550 ワード

1.学習内容


Flaskは、Webページを動的に印刷する工場です.
インストール方法
pip install flask
基本フレームワーク
from flask import Flask

app = Flask(__name__)

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

app.run()
商品
製品:製造元による作成

Web上でのFlashの使用


https://glitch.com/可愛いクラウドサービス
検索ウィンドウでフラスコを検索し、サンプルプログラムを表示できます.
これらの例は、フラスコが独自の環境に設定されている場合に符号化できます.

このようなウィンドウが表示され、
star.shはサーバです.pyの実行
server.pyはプログラムコードを作成するPythonファイルです.
start.shの基本Pythonバージョンは2.7.12
(端末にpython-versionコマンドを入力すると、バージョンチェックが出力されます)
主にpython 3をpython 3--versionコマンド3.7.12に置き換えます.

なぜこのサイトを使用しますか?


横にウィンドウを配置すると、次のPreviewボタンがリアルタイムで変更されます.

ベースの操作


ルーティング(route+ing):インターネットを介してソース位置から宛先まで
データ転送を許可する機能
ソウルを出発して釜山に行く時、多様なルートのうちの1つを選んで移動するとします.
静的配線と動的配線
静的:管理者が直接パス情報を指定する
動的:変更されたナイトク情報をルータ間で自動的に交換します.
アドレスの後に/read//create/update//delete/などを追加し、対応する関数にルーティングします.
デフォルトアドレス/ex)read:デフォルトアドレスに入ったときに表示されるページについて
デフォルトアドレス/ページ名/read:ページに入るときに表示されるページについて
基本ツール
@app.route("/")
def index():
  return "<h1>Home</h1>"
  
@app.route("/update/")
def read():
  return "Read"

@app.route("/create/")
def create():
  return "Create"
返すコードを動的に構成できます
```코드``` 를 사용해서 줄바꿈을 용이하게 만듬
f「データを入れるためにf.f stringと書きました」
https://realpython.com/python-f-strings/
で行ないます.意味があるようです.
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>
  '''
繰り返し記述されたコードは関数によって再利用率を向上させる.
from flask import Flask

app = Flask(__name__)

#topic들(id, title, body)을 key로 하는 딕셔너리들을 리스트로 묶음
topics = [
  {"id":1, "title":"html", "body":"html is ...."},
  {"id":2, "title":"css", "body":"css is ...."},
  {"id":3, "title":"js", "body":"js is ...."}
]

# def(파이썬에서의 함수)로 템플릿 함수를 저장및 재사용
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!')
#template 함수의 매견변수로는 그 페이지의 내용을 반환

# 각 항목을 클릭하면 연결될 페이지를 작성한다. 
# route의 매개변수에도 변수를 담을 수 있다. 
# 이름은 임의로 설정해주면 되는데 type은 기본적으로 문자열로 들어오게 되므로, 
# 숫자인 경우에는 <int:>로 정수 캐스팅이 필요하다.

@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으로 묶어주기
    <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)
対象、観測、ケースが同じなら(1件1件のデータで、リストに並べやすい)
特性(ディックマニュアルに入れやすい)
誤字があると思ったら読んで書いてください.
name値がサーバに送信される入力値