Хотя я не смотрел на него широко, этот декоратор , который я нашел в ActiveState, кажется довольно полезным для такого рода вещей. Наряду с subprocess.Popen(..., close_fds=True)
, по крайней мере, я готов для сценариев оболочки в Python.
Вы, вероятно, захотите изучить Мозаики .
РЕДАКТИРОВАНИЕ: На связанной ноте к мозаикам Вы могли бы хотеть изучить Struts. Это не то, что Вы ищете (это - мозаики), но это полезно для кого-то приезжающего от Django.
Другие опции, которые стоит исследовать, включают Sitemesh, который основан на идее декораторов страницы, и Поверхности Сервера Java (JSF), который использует веб-компоненты UI. И в то время как мы говорим о быстрой разработке с веб-платформами на платформе Java, я поощряю Вас проверять Grails. Это имеет ту же миссию, имеет Django; а именно, быстрая разработка веб-приложения на основе конвенции по конфигурации.
Hope это не слишком многие предложение для одного сообщения.: o)
Вы можете делать аналогичные вещи, используя файлы тегов JSP. Создайте свой собственный page.tag
, содержащий структуру страницы. Затем используйте тег
для вставки содержимого.
Моя любимая технология веб-интерфейса Java - Facelets. Он поддерживает самые Django-подобные шаблоны, которые я видел. Он не такой чистый, как Django, но вы получаете те же преимущества наследования.
Вместо Django:
Super:
{% block content %}{% endblock %}
Sub:
{% block content %}inheriting template's content here{% endblock %}
Синтаксис Facelet выглядит следующим образом:
Super:
<ui:insert name="content"></ui:insert>
Sub:
<ui:define name="content">inheriting template's content here</ui:define>
Вы можете использовать быстрый фреймворк для наследования шаблонов JSP
base.jsp
%@ taglib uri="http://www.rapid-framework.org.cn/rapid" prefix="rapid" %>
<html>
<head>
<rapid:block name="head">
base_head_content
</rapid:block>
</head>
<body>
<br />
<rapid:block name="content">
base_body_content
</rapid:block>
</body>
</html>
child.jsp
<%@ taglib uri="http://www.rapid-framework.org.cn/rapid" prefix="rapid" %>
<rapid:override name="content">
<div>
<h2>Entry one</h2>
<p>This is my first entry.</p>
</div>
</rapid:override>
<!-- extends from base.jsp or <jsp:include page="base.jsp"> -->
<%@ include file="base.jsp" %>
output
<html>
<head>
base_head_content
</head>
<body>
<br />
<div>
<h2>Entry one</h2>
<p>This is my first entry.</p>
</div>
</body>
</html>
исходный код