名字能夠是app.py/run.py/main.py/index.py
html
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Hello World' if __name__ == '__main__': # 注意: flask默認端口5000 app.run()
# 導入Flask類 from flask import Flask """ import_name Flask程序所在的包(模塊),傳 __name__ 就能夠 其能夠決定 Flask 在訪問靜態文件時查找的路徑 static_path 靜態文件訪問路徑(不推薦使用,使用 static_url_path 代替) static_url_path 靜態文件訪問路徑,能夠不傳,默認爲:/ + static_folder static_folder 靜態文件存儲的文件夾,能夠不傳,默認爲 static template_folder 模板文件存儲的文件夾,能夠不傳,默認爲 templates """ app = Flask(import_name=__name__) # 編寫路由視圖 # flask的路由是經過給視圖添加裝飾器的方式進行編寫的。固然也能夠分離到另外一個文件中。 # flask的視圖函數,flask中默認容許經過return返回html格式數據給客戶端。 @app.route(rule='/') def index(): return '<mark>Hello Word!</make>' # 加載項目配置 class Config(object): # 開啓調試模式 DEBUG = True # flask中支持多種配置方式,經過app.config來進行加載,咱們會這裏經常使用的是配置類 app.config.from_object( Config ) # 指定服務器IP和端口 if __name__ == '__main__': # 運行flask app.run(host="0.0.0.0", port=5000)
main.py前端
Copyfrom flask import Flask, render_template, request, redirect, session, url_for app = Flask(__name__) app.debug = True # 調試模式 app.secret_key = 'xxxx-xxxx-xxxx-xxxx' # 跟djangosetting中的祕鑰一個意思 USERS = { 1: {'name': '張三', 'age': 18, 'gender': '男', 'text': "道路千萬條"}, 2: {'name': '李四', 'age': 28, 'gender': '男', 'text': "安全第一條"}, 3: {'name': '王五', 'age': 18, 'gender': '女', 'text': "行車不規範"}, } @app.route('/detail/<int:nid>', methods=['GET']) def detail(nid): user = session.get('user_info') if not user: return redirect('/login') info = USERS.get(nid) return render_template('detail.html', info=info) @app.route('/index', methods=['GET']) def index(): # 從session中拿出user_info user = session.get('user_info') if not user: # return redirect('/login') url = url_for('l1') # 反向解析 print(url) return redirect(url) return render_template('index.html', user_dict=USERS) @app.route('/login', methods=['GET', 'POST'], endpoint='l1') # endpoint路由的別名,用做反向解析 def login(): if request.method == "GET": return render_template('login.html') else: # request.query_string # post提交過來的數據放在form中 # get請求提交過來的數據query_string中 user = request.form.get('user')w pwd = request.form.get('pwd') if user == 'lqw' and pwd == '123': # 往session中放入key和value session['user_info'] = user return redirect('/index') return render_template('login.html', error='用戶名或密碼錯誤') # 分析源碼之後的路由寫法 def xxx(): return 'xxx' app.add_url_rule('/xxx', view_func=xxx) if __name__ == '__main__': app.run()
detail.htmlpython
Copy<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>詳細信息 {{ info.name }}</h1> <div> {{ info.text }} </div> </body> </html>
index.htmldjango
Copy<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>用戶列表</h1> <table> {% for k,v in user_dict.items() %} <tr> <td>{{ k }}</td> <td>{{ v.name }}</td> <td>{{ v['name'] }}</td> <td>{{ v.get('name') }}</td> <td><a href="/detail/{{ k }}">查看詳細</a></td> </tr> {% endfor %} </table> </body> </html>
login.htmlflask
Copy<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>用戶登陸</h1> <form method="post"> <input type="text" name="user"> <input type="text" name="pwd"> <input type="submit" value="登陸">{{ error }} </form> </body> </html>
# Flask三板斧: return '<mark>字符串</mark>' # 提示: 支持HTML語法 return render_template('index.html') return redirect('/login') # 路由寫法(路徑,支持的請求方式,別名) # 基本的路由寫法 @app.route('/login',methods=['GET','POST'],endpoint='l1') # 分析源碼之後的路由寫法 def xxx(): return 'xxx' app.add_url_rule('/xxx', view_func=xxx) # 模板語言渲染 同dtl,可是比dtl強大,支持加括號執行,字典支持中括號取值和get取值 # 分組(django中的有名分組) @app.route('/detail/<int:nid>',methods=['GET']) def detail(nid): # 反向解析 url_for('別名') # 獲取前端傳遞過來的數據 # get 請求 request.query_string # post請求 user = request.form.get('user') pwd = request.form.get('pwd')