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
cevap
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)
teşekkürler! Çalışıyor 123 –
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. –
: '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 –