2016-04-04 16 views
2

Bir FTP sunucusunda bazı şablonlar var ve uygulamam başka bir sunucuda çalışıyor. Bir FTP bağlantısında şablon oluşturmak için render_template kullanabilir miyim?Bir FTP sunucusunda depolanan bir Jinja şablonu oluşturma

+0

: 'render_template ("ftp dosya bağlantısı")' ben bu belki ftp dosyalarının içeriğini okuyabilir bulmaya çalışıyorum, ama ben iyi bir yol olmadığını düşünüyorum. render_template hakkındaki belgeyi okudum ama hiçbir yöntem bunu yapamaz gibi görünüyor, bu sorunu çözmenin bir yolu var mı? Teşekkürler –

cevap

3

Evet, başka bir sunucudaki şablon dosyalarıyla render_template() işlevini kullanabilirsiniz. Uzak şablonu bağlantıdan alan bir loader oluşturun. Bu örnekte bir HTTP sunucusu kullanıyorum, ancak UrlLoader yapıcısına iletilen URL'yi değiştirerek bir FTP sunucusu kullanabilirsiniz. Böyle

from flask import Flask, render_template 
from jinja2 import BaseLoader, TemplateNotFound 
from urllib import urlopen 
from urlparse import urljoin 


class UrlLoader(BaseLoader): 
    def __init__(self, url_prefix): 
     self.url_prefix = url_prefix 

    def get_source(self, environment, template): 
     url = urljoin(self.url_prefix, template) 
     try: 
      t = urlopen(url) 
      if t.getcode() is None or t.getcode() == 200: 
       return t.read().decode('utf-8'), None, None 
     except IOError: 
      pass 
     raise TemplateNotFound(template) 

app = Flask(__name__) 
app.jinja_loader = UrlLoader('http://localhost:8000/') 


@app.route('/') 
def root(): 
    return render_template('hello.html') 

if __name__ == "__main__": 
    app.run(debug=True) 
+0

teşekkürler! Çalışıyor 123 –

+0

bu şekilde bazı sorunlar var, bazen dosyalarım ve URL'lerim gerçekten var ve 404 hatası olacak, ne olduğunu yanlış anlayamıyorum, bu, hata tespit edememek demektir. Bu sorunu çözmenin yolunu bulabileceğimi söyleyebilir misin? çok teşekkürler. –

İlgili konular