web2py связывается с CSS

Я изучаю web2py 1.98.2, поэтому вопрос очень простой. В папке static/css я создал файл basic.css со следующим содержимым:

.auth_navbar {
  top: 0px;
  float: right;
  padding: 3px 10px 3px 10px; 
}

В layout.html у меня есть:

<head>
  ...
  {{response.files.append(URL('static','css/base.css'))}}
  ...
</head>
<body>
  ...
  {{try:}}{{=auth.navbar(action=URL('default','user'))}}{{except:pass}} 
  ...
</body>

Контроллер default.py имеет очень простой код:

def index(): return dict(message="hello people")

И, наконец, default/index.html выглядит так:

{{extend 'layout.html'}}
<h2>This is the default/index.html template</h2>
{{#=BEAUTIFY(response._vars)}}

Итак, я запускаю приложение, и index.html отображается, как и ожидалось. Однако CSS не работает. Я ожидал следующую строку в исходном коде страницы:

<link href="/welcome/static/css/base.css" rel="stylesheet" type="text/css" /> 

но его там нет. Что мне не хватает?


person synergetic    schedule 25.08.2011    source источник


Ответы (2)


{{response.files.append(URL('static','css/base.css'))}}

Приведенная выше строка просто добавляет base.css в список response.files. Тег <link> создается шаблоном web2py_ajax.html, который включен в layout.html по умолчанию. Итак, вам нужно убедиться, что web2py_ajax.html также включен в ваш layout.html, а base.css добавлен в response.files до этого. Так:

{{response.files.append(URL('static','css/base.css'))}}
{{include 'web2py_ajax.html'}}

Обратите внимание, что ваше первое предложение относится к basic.css, но ваш код относится к base.css — убедитесь, что вы используете правильное имя файла (web2py поставляется со своим собственным base.css).

person Anthony    schedule 25.08.2011

Возможно, вы пропустили:

{{include}}

В тегах body вашего layout.html.

person Jarrod    schedule 25.08.2011
comment
Я внес незначительные изменения в ваш ответ, чтобы он квалифицировался как ответ (в ответах не должно быть просьбы о разъяснении). - person Tim Post♦; 25.08.2011
comment
Спасибо, Тим, я этого не знал! :) - person Jarrod; 26.08.2011