Высказанный мнение с расположением, как я могу загрузить статические файлы (CSS и JS, по существу) в <голова> из файла представления?
layout.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{=T.accepted_language or 'en'}}">
<head>
<title>{{=response.title or request.application}}</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!-- include requires CSS files
{{response.files.append(URL(request.application,'static','base.css'))}}
{{response.files.append(URL(request.application,'static','ez-plug-min.css'))}}
-->
{{include 'web2py_ajax.html'}}
</head>
<body>
{{include}}
</body>
</html>
myview.html
{{extend 'layout.html'}}
{{response.files.append(URL(r=request,c='static',f='myview.css'))}}
<h1>Some header</h1>
<div>
some content
</div>
В вышеупомянутом примере "myview.css" файл или проигнорирован web2py или разделен браузером.
Таким образом, что лучший способ состоит в том, чтобы загрузить определенные для страницы файлы как этот файл CSS? Я не наполнил бы все свои статические файлы в мое расположение.
В myview.html поменяйте местами первые две строки
{{response.files.append(URL(r=request,c='static',f='myview.css'))}}
{{extend 'layout.html'}}
Помните, что в 1.78.1 и 1.78.2 была ошибка, не позволяющая этому работать. В тот же день он был зафиксирован в 1.78.3. Response.file.append (...) также можно переместить в действие контроллера, которому он нужен. Вы не должны помещать логику перед расширением, но вы определяете переменные, которые будут передаваться в расширенное представление.