2011-01-12 15 views
19

Aynı sayfa düzeni ve yapısıyla, ancak bazı farklı renkler, metinler, vb. Ile beş sayfam var, bu yüzden şablonlama için ideal bir ortam. Jinja2 ve muhtemelen şişeyi kullanmaya karar verdim. Bir sayfada şablonlar ile yapabilecekleriniz hakkında çok şey açıklayan, ancak sayfaya değişkenlerin nasıl gönderileceği hakkında pek fazla bilgi vermeyen dökümanları ve çevrimiçi eğiticileri okudum.Değişkenleri jinja'da nerede saklıyorsunuz?

  • Sayfanın spesifik değişkenlerini nerede saklıyorsunuz?
  • Kod, hangi sayfanın istendiğini ve hangi değişkenlerin yükleneceğini nasıl biliyor?

    Önce dosyalarından şablonları yüklemek yerine isteyeceksiniz Sonra bir şablon

    >>> from jinja2 import Template 
    >>> template = Template('Hello {{ name }}!') 
    

    oluşturmak değişkenleri Genellikle

    >>> template.render(name='John Doe') 
    u'Hello John Doe!' 
    

    geçen render:
+1

Flask iyi bir seçimdir. Ve öğretici az ya da çok sorularınızı yanıtlıyor: http://flask.pocoo.org/docs/quickstart/#rendering-templates. Ayrıca, @ app.route'un URL'yi nasıl tanımladığını da not edin. – 9000

+0

Teşekkürler - bu yüzden her sayfa için bir python betiği olurdu, her bir python betiğindeki değişkenleri bildirir ve sonra bunları template.render'a iletirim? –

cevap

48

İşte temel kullanım var kodu. Yani daha verimli ve optimize edilmiş, ve şablon devralma sağlar: Python yolunda yüklü olarak, yourapplication Python paketinin templates klasörünün içindeki şablonlar arayacaktır

from jinja2 import Environment, PackageLoader 
env = Environment(loader=PackageLoader('yourapplication', 'templates')) 

. Belirli bir dosya sisteminden veya başka yerlerden yüklemek için diğer yükleyicileri de kullanabilirsiniz.

template = env.get_template('mytemplate.html') 
print template.render(the='variables', go='here') 

her şeyi sizin için yapılandırılmış Flask kullanarak, bu nedenle sadece balona en render_template fonksiyonunu kullanabilirsiniz ve zaten uygulamanın templates alt klasör arayacaktır:

Sonra bir şablon yükleyebilirsiniz

from flask import render_template 

@app.route('/hello/') 
def hello(name=None): 
    return render_template('hello.html', name=name) 

Not render_template

geçirilmeden (ayrıca bağlam olarak da bilinir) şablon değişkeni

Jinja, good documentation numaralı güzelliğe sahiptir. Lütfen onu oku. Daha fazla soru sormaktan çekinmeyin.

1

Düzenleme: Bir cevap arayışında İnterWeb'i google'dan ve ölü ((onlar beni yardımcı olduk oldukça emin) yardımcı olabilecek bazı makaleleri

http://dbanck.de/2009/01/13/using-jinja2-with-django/

http://www.hindsightlabs.com/blog/2010/03/15/jinja2-and-django-4ever/ buldum)

http://djangosnippets.org/snippets/1061/

+0

Herhangi bir açıklama olmadan bağlantıların bir seçimi bana yardımcı olmaz, -1. – jwbensley

+0

@jwbensley Awww, kopyalama yapıştırma devre dışı bırakıldığından yardımcı değil mi? İşte bir açıklama: oku ...Ama aynı zamanda senin aşağı oy da yasal, çünkü ben tembel ya da acelesi vardı (hangi hatırlayamıyorum) – StefanNch

+0

Sadece bir bağlantı yükünü yapıştırmak link çürümesine yol açar, ki bu da şu anki bağlantılardan birini ölü olarak işaretlediğin gibi belli oluyor. – jwbensley

İlgili konular