麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

flask實踐:猜數字

2019-11-10 19:17:10
字體:
來源:轉載
供稿:網友

作者:李輝 鏈接:https://zhuanlan.zhihu.com/p/23340992 來源:知乎 著作權歸作者所有。商業 |-guess.html |-base.html 基模板 |-venv/ 虛擬環境 實現代碼

app.py

```# -*- coding: utf-8 -*-import randomfrom flask import Flask, render_template, Flash, redirect, url_for, sessionfrom flask_wtf import Formfrom wtforms import IntegerField, SubmitFieldfrom wtforms.validators import Required, NumberRangefrom flask_bootstrap import Bootstrapapp = Flask(__name__)app.config['SECRET_KEY'] = 'very hard to guess string' #設置secret keybootstrap = Bootstrap(app) # 初始化Flask-Bootstap擴展@app.route('/')def index(): # 生成一個0~1000的隨機數,存儲到session變量里。 session['number'] = random.randint(0, 1000) session['times'] = 10 return render_template('index.html')@app.route('/guess', methods=['GET', 'POST'])def guess(): times = session['times'] # 從session變量里獲取次數 # 從session變量里獲取在index函數里生成的隨機數字 result = session.get('number') form = GuessNumberForm() if form.validate_on_submit(): times -= 1 session['times'] = times # 更新次數值 if times == 0: flash(u'你輸啦……o(>﹏<)o') return redirect(url_for('.index')) answer = form.number.data if answer > result: flash(u'太大了!你還剩下%s次機會' % times) elif answer < result: flash(u'太小了!你還剩下%s次機會' % times) else: flash(u'啊哈,你贏了!V(^-^)V') return redirect(url_for('.index')) return render_template('guess.html', form=form)class GuessNumberForm(Form): number = IntegerField(u'輸入數字(0~1000):', validators=[ # 傳入驗證函數和相應的錯誤提示信息。 Required(u'輸入一個有效的數字!'), NumberRange(0, 1000, u'請輸入0~1000以內的數字!')]) submit = SubmitField(u'提交')if __name__ == '__main__': # 用于heroku部署,本地可省略 app.run()

index.html

{% extends "base.html" %}{% block page_content %}<!-- 傳入url_for的參數是視圖函數的名稱 --><a class="btn btn-success btn-lg" href="{{ url_for('guess') }}">開始游戲</a>{% endblock %}guess.html{% extends "base.html" %} <!-- 引入基模板 -->{% import "bootstrap/wtf.html" as wtf %}{% block page_content %} <!-- 使用Flask-Bootstrap提供的函數來生成默認樣式的表單 --> {{ wtf.quick_form(form) }}{% endblock %}

完整的項目見源碼(底部)。

相關知識

session(會話) session是Flask的上下文(context)全局變量,可以用來存儲(用字典的形式)請求之間需要“記住”的值。在這個猜數字游戲里,我使用它來存儲生成的隨機數和剩余的機會次數。 要使用session,得先設置一個secret key,這用來給Cookie簽名以加密session,這樣做的效果是用戶可以看到cookie但不能篡改它。盡管如此,session并不是安全的,不能用來存儲密碼,這個視頻演示了一個破解session的過程:https://youtu.be/mhcnBTDLxCI。下圖是Cookie的信息:

更多細節見:http://flask.pocoo.org/docs/0.11/quickstart/#sessions

安裝和運行

源碼地址:https://github.com/helloflask/guess

下載或使用git命令克隆項目后,切換到程序根目錄。使用virtualenv創建一個虛擬環境,激活后使用pip安裝所需依賴:

pip install -r requirements.txt 然后運行:

set FLASK_APP=app.py flask run 訪問: http://127.0.0.1:5000/ 上面的代碼實現的效果:

稍微美化一下,變成了下面這樣:

源碼:https://github.com/helloflask/guess

Demo:http://guessguess.herokuapp.com/


上一篇:AspectJ概論

下一篇:win32控件 顯示樣式...

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产一国产精品一级毛片 | 久草视频在线看 | 久久久久久久久国产 | 成人h视频在线 | 成人精品免费在线观看 | 污片视频网站 | 一级国产免费 | 久久亚洲春色中文字幕久久 | 国产一级一片免费播放 | 亚洲综人网 | 一区二区三区黄色 | 91专区在线观看 | 欧美一级片 在线播放 | 国产在线一级视频 | 国产三级a三级三级 | 黄色免费播放网站 | 操操操操网 | 一级黄色免费观看 | 午夜久久久精品一区二区三区 | 久久情爱网 | 一级一级一级一级毛片 | www.狠狠插.com | 欧美日韩在线播放 | 日韩中文字幕一区二区三区 | 欧美人禽| 欧美一级电影网站 | 国产高潮国产高潮久久久91 | 欧美无极品 | 99re热精品视频 | 成年免费观看视频 | wwwxxx视频| 日本黄色大片免费 | 成人在线精品视频 | 一级黄色欧美 | 日本在线观看视频网站 | av在线播放免费观看 | 久久国产精品久久久久久久久久 | 在线观看国产网站 | www.99re1.com | 国产精品高清一区 | 毛片118极品美女写真 |