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

首頁 > 學院 > 開發(fā)設計 > 正文

flask實踐:猜數(shù)字

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

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

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的隨機數(shù),存儲到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變量里獲取次數(shù) # 從session變量里獲取在index函數(shù)里生成的隨機數(shù)字 result = session.get('number') form = GuessNumberForm() if form.validate_on_submit(): times -= 1 session['times'] = times # 更新次數(shù)值 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'輸入數(shù)字(0~1000):', validators=[ # 傳入驗證函數(shù)和相應的錯誤提示信息。 Required(u'輸入一個有效的數(shù)字!'), NumberRange(0, 1000, u'請輸入0~1000以內的數(shù)字!')]) submit = SubmitField(u'提交')if __name__ == '__main__': # 用于heroku部署,本地可省略 app.run()

index.html

{% extends "base.html" %}{% block page_content %}<!-- 傳入url_for的參數(shù)是視圖函數(shù)的名稱 --><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提供的函數(shù)來生成默認樣式的表單 --> {{ wtf.quick_form(form) }}{% endblock %}

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

相關知識

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

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

安裝和運行

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

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

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

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

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

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

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


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 毛片免费在线观看 | 日日草天天干 | 亚州综合一区 | 国产精品成人一区二区三区电影毛片 | 操嫩草 | 国产成人自拍小视频 | 911视频免费版 | 天天操综 | 免费性爱视频 | 久久久青青草 | 99极品视频| 草久网 | 精品国产一区二区三区四区阿崩 | 国产亚洲欧美日韩高清 | 日韩欧美高清片 | 国产日本欧美在线观看 | 精品一区二区久久久久久按摩 | 免费观看黄色片视频 | 一级毛片在线免费播放 | 羞羞视频免费入口网站 | 欧美一区二区三区久久精品视 | 毛片118极品美女写真 | 日本黄色大片免费 | 免费看性xxx高清视频自由 | 九九福利视频 | 韩国一大片a毛片 | 久久99国产伦子精品免费 | 国产精品久久久久久238 | 99精品欧美一区二区 | 亚洲一区二区在线免费 | www.成人免费 | 欧美日韩专区国产精品 | 中文字幕22页 | 国产精品久久久久久久久粉嫩 | 在线无码| 成年人黄视频 | 精品一区在线视频 | 久久影院在线观看 | 久久久久久久.comav | 成人免费av在线播放 | 黄色网页在线观看 |