2016-03-25 17 views
3
ile hizmet verin

Oluşturulduktan sonra statik olarak saklanacak bir sayfa oluşturmak istiyorum. Anımsatmayı biliyorum ama Flask'ın bunun için yerleşik veya farklı bir yöntem sağlayıp sağlamadığını merak ediyordum.Bir Jinja şablonundan statik bir sayfa oluşturun ve Flask

+0

Böyle sayfaların tümünü mi yoksa sadece belirli bir sayfayı mı istiyorsunuz? – Suever

+0

Sadece belirli bir sayfa (lar), kesinlikle hepsi değil. Uygulamayı yeniden başlattığımda sayfanın içeriği değişebilir. – muddyfish

cevap

4

Flask-Cache'u kullanabilirsiniz. Cache örneğini oluşturarak

Başlangıç: CACHE_TYPE = 'simple' önbelleğe alma için bir piton sözlüğünü kullandığı

from flask import Flask 
from flask.ext.cache import Cache 
application = Flask(__name__) 
cache = Cache(application, config={'CACHE_TYPE': 'simple'}) 

dikkat edin. Alternatif olarak, memcached veya redis'u kullanabilir ve daha fazla ölçeklenebilirlik elde edebilirsiniz. Veya, CACHE_TYPE = 'filesystem' ve önbellek dosya sistemine kullanabilirsiniz.

Sonra görünüm işlevlerini süslemek:

@cache.cached(timeout=100000) 
def viewfunc(): 
    return render_template('viewtemplate.html') 
+2

Flask-Cache ile ["sonsuz zaman aşımı"] (http://stackoverflow.com/questions/17938711/how-can-i-configure-flask-cache-with-infinite-timeout) hakkında bu tartışmayı görün. –

4

render_template bir dize oluşturur. Bir dize bir dosyaya kaydedilebilir. Şişe serve files olabilir.

# generate the page at some point 
import os 
out = render_template('page.html', one=2, cat='>dog') 
with open(os.path.join(app.instance_path, 'page.html') as f: 
    f.write(out) 

# serve it some other time 
from flask import send_from_directory 
return send_from_directory(app.instance_path, 'page.html') 

Bu örnek sadece instance folder dosyayı (emin birinci var olun) ve sert kodlarını dosya adı koyar. Gerçek uygulamanızda dosyaları nerede saklamak istediğinizi ve ne aramak istediğinizi bileceğinizi varsayalım.

Eğer bu işi çok yaparsanız, Flask-Cache daha iyi bir seçim olacaktır, çünkü önbelleğe alınmış verileri sizin için saklamakta ve yüklemektedir ve daha verimli arka planlar (veya dosya sistemi) kaydedebilirsiniz.