2014-12-23 3 views
0

Я изучаю веб-страницу и сталкиваюсь с одной проблемой. Я не знаю, как это исправить.Шаблон рендеринга и его переменная IN webpy

В соответствии с док. Я нашел, что это способ визуализации шаблона и передачи одной переменной в шаблон.

render = web.template.render('templates') 
print render.hello('world') 

Я использовал то же самое в своем демонстрационном приложении.

import web, sys, os 
sys.path.append(os.path.abspath(os.path.dirname(__file__))) 



urls = (
    '/', 'hello' 
) 
app = web.application(urls, globals()) 

class hello:   
    def GET(self): 
     render = web.template.render('templates/') 
     name = 'Bob'  
     return render.home(name) 

if __name__ == "__main__": 
    app.run() 

Но всякий раз, когда я запускаю этот код, я все время получаю ошибку.

<type 'exceptions.TypeError'> at/
__template__() takes no arguments (1 given) 

Пожалуйста, помогите мне с этой проблемой.

+0

Это работает, если вы не используете переменную? Также как выглядит ваш шаблон 'home'? – Gohn67

ответ

1

Вы, вероятно, отсутствует $def with(name)

Попробуйте использовать это в качестве шаблона home.html

$def with(name) 
Hello $name 

Думают о $def with() в объявлении функции. Независимо от параметров, которые вы указали в $def with(), могут использоваться как переменные в вашем шаблоне. Поэтому, если у вас есть три параметра, тогда метод рендеринга для этого шаблона будет ожидать три параметра, такие как нормальная функция.

Пример шаблон:

$def with(name, todays_date, foods) 

My name is $name 

Today's date is $todays_date.date() 

$for food in foods: 
    $food 

Пример визуализация вызов:

return render.home('Bob', datetime.now(), ['apple', 'orange', 'banana']) 

На стороне записки, шаблоны Webpy являются своим родом уродливыми, но вы можете в основном использовать питон логики, такие как петля и списки , Для запуска кода python вам необходимо использовать $.

Вот ссылка на документы шаблона для Webpy: http://webpy.org/docs/0.3/templetor

+0

благодарит Гона, но не могли бы вы объяснить, почему это шоу. – burning

+0

@burning Я добавил дополнительную информацию. Я надеюсь, что это помогает. – Gohn67

0

Просто Headup, если кто-то использует $def with (args), он не будет работать ... не белое пространство не должно быть посередине между with и ()

Смежные вопросы