Найти - Пользователи
Полная версия: не получается запустить через wsgi простой html шаблон через python + jinja2
Начало » Python для новичков » не получается запустить через wsgi простой html шаблон через python + jinja2
1 2
Saytik
и снова завис уже на несколько дней …

хочу запустить просто html страницу с помощью python + jinja2
(nginx + uwsgi)

Скрипт:
import sys
import os
from jinja2 import Environment, FileSystemLoader
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
def application(environ, start_response):
    start_response("200 OK", [])
    templ_dir = Environment(loader=FileSystemLoader(os.path.join(os.path.dirname(__file__), 'templates')))
    template = templ_dir.get_template('base.html')
    return [template.render()]

страница загружается с кодом 200,ОК, но html из файла base.html не выводит …
Хотя если запускать вот так скрипт из консоли - html выводится (python3 start.py):
if __name__ == "__main__":
    env = Environment(loader=FileSystemLoader(os.path.join(os.path.dirname(__file__), 'templates')))
    template = env.get_template('base.html')
    print(template.render())

подскажите чего не хватает этому wsgi … читал и на русском и на инглыше пробовал, не доходит пока-что много слов мало понимаю так как практики с питоном мало …
Saytik
в доке wsgi написано что функция application должна возвращать итеруемый объект.
Наверное template.render() надо как-то сделать итеруемым объектом …
это что значит чтобы каждая строка html была элементом списка что-ли ?
bismigalis
вообще-то строка тоже итерируемый объект

я незнаю, но может надо просто
return template.render()
Saytik
пробовал - то же самое … :-(
bismigalis
а просто строку выводит?
return ['Hello World!']
Saytik
да выводит … Hello word это пока-что единственное что я добился ))
попробовал еще вот такое не проканало
    return [i for i in template.render().readlines()]
AttributeError: 'str' object has no attribute 'readlines'
Saytik
хотя вот это не показывает
return ['Hello World!']

а вот так выводит:
return b"Hello World"

и вот так выводит:
return [b"Hello World"]
bismigalis
template.render()
возвращает unicode строку

а тебе надо получается байты возвращать
Saytik
вот с этими кодировками мне по сей день не доходит …
какая разница в какой кодировке я возвращаю строчку , главное браузеру где-то указать в какой кодировке читать ее правильно ?
читал вот статью по кодировкам и откуда utf-8 и зачем появилась, но суть мне так и не раскрыта зачем иногда надо u'' добавлять к тексту, а в данном случае почему не u'' а надо b'' ….
bismigalis
ты на каком питоне?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB