2014-10-29 5 views
0

Так что, похоже, я смог получить Mako для работы. По крайней мере, все, что делается на консоли, работает. Теперь я попытался отобразить мой index.html с Mako, и все, что я получаю, является пустой страницей. Это модуль, я называю:Пустая страница с помощью рендеринга шаблона Мако в python/cherrypy

def index(self): 
    mytemplate = Template(
        filename='index.html' 
       ) 
    return mytemplate.render() 

HTML, заключается в следующем:

<!DOCTYPE html> 
<html> 
<head> 
<title>Title</title> 
<meta charset="UTF-8" /> 
</head> 
<body> 
<p>This is a test!</p> 
<p>Hello, my age is ${30 - 2}.</p> 
</body> 
</html> 

Так что, когда я называю 192.168.0.1:8081/index (это локальная настройка сервера я бегу) она запускает функцию, но результат в моем браузере - пустая страница.

Правильно ли я понял Mako или что-то пропустил?

ответ

0

В основном использовании все довольно просто, и well documented. Просто укажите правильные пути к движку.

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 


import os 

import cherrypy 
from mako.lookup import TemplateLookup 
from mako.template import Template 


path = os.path.abspath(os.path.dirname(__file__)) 
config = { 
    'global' : { 
    'server.socket_host' : '127.0.0.1', 
    'server.socket_port' : 8080, 
    'server.thread_pool' : 8 
    } 
} 


lookup = TemplateLookup(directories=[os.path.join(path, 'view')]) 


class App: 

    @cherrypy.expose 
    def index(self): 
    template = lookup.get_template('index.html') 
    return template.render(foo = 'bar') 

    @cherrypy.expose 
    def directly(self): 
    template = Template(filename = os.path.join(path, 'view', 'index.html')) 
    return template.render(foo = 'bar') 



if __name__ == '__main__': 
    cherrypy.quickstart(App(), '/', config) 

Вдоль файла Python, создать view каталог и поместите следующий под index.html.

<!DOCTYPE html> 
<html> 
<head> 
    <title>Title</title> 
    <meta charset="UTF-8" /> 
</head> 
<body> 
    <p>This is a ${foo} test!</p> 
    <p>Hello, my age is ${30 - 2}.</p> 
</body> 
</html> 
+0

Это замечательно. Я не знаю, в частности, где разница с моим server.py была (я посмотрю позже), но я буду использовать ваши в качестве основы и, наконец, начну работать над реальными вещами. Благодарим вас! – iBaer

+0

Можете ли вы объяснить, в чем разница между индексом и прямым модулем в вашем примере? Оба, похоже, делают то же самое, но я полагаю, что только модуль «индекс» используется, когда вы просто запускаете сервер, нет? – iBaer

+0

'' TemplateLookup'' - это поиск в файловой системе. Вы указываете, где находится корневой каталог шаблона, а затем просто попросите его получить шаблон, например '' lookup.get_template ('user/cabinet.html') ''. Вы можете сделать то же самое самостоятельно, как в '' прямо'', указав полное имя файла шаблона. Я дал вам ссылку на соответствующую страницу документации. Постарайтесь понять, как работает ваш шаблонный движок. – saaj