2010-06-20 3 views
19

Итак, я очень люблю ХАМЛ. В частности, мне нравится интеграция с RedCloth и BlueCloth, поэтому я могу использовать Markdown и Textile, смешанные с моей HAML.Ruby HAML с Django?

Я также люблю Python и Django.

Итак, я хотел бы использовать HAML с Django. Теперь я уже понимаю, что есть некоторые попытки клонирования синтаксиса HAML в Python (SHPAML и другие). Я пробовал их, и пока они не плохие, я обнаружил, что я действительно хочу настоящую HAML. Частично для его синтаксиса, но и для таких вещей, как RedCloth и BlueCloth.

Итак, мой вопрос: как заставить HAML и Django работать вместе?

Одним из решений, я думаю, было бы создать шаблоны HAML, а затем скомпилировать их в HTML с помощью инструмента командной строки каждый раз, когда они будут обновлены.

Quesiton 1: У меня возникнут проблемы?

Я также задаюсь вопросом, есть ли способ заставить Python и Ruby играть вместе еще немного. Одна из моих идей заключалась в том, что я искал рубиновые процессы. Вероятно, это плохая идея, но у кого есть какие-то мысли об этом?

Вопрос 2: Как использовать Python для вызова реального Ruby HAML?

Наконец, если кто-нибудь знает о реализации Python из Haml, который полного, и поддерживает как Textile или Markdown, а также открытый текст PassThru, то дай мне знать.

Вопрос 3: Есть ли полный перевод HAML на Python, включая поддержку Markdown или Textile?

Спасибо!

ответ

8

Вопрос 1: статические файлы HTML должны работать точно (если вы не планируете использовать функцию оценки рубинов HAML для динамического контента). Я использую аналогичный путь на веб-сайте php с таблицами стилей SASS. Просто убедитесь, что вы начинаете HAML в режиме часового каталога, прежде чем начать рубить;)

Вопрос 2: в то время как порождая процесс рубиновый создать HTML-код можно, но я не рекомендую это вам, потому что инициализация рубин интерпретатор и загрузка необходимых файлов занимает много процессорных времен, поэтому лучше придерживаться статических файлов. Если вам нужна функция оценки рубина, чтобы включить в документ данные, созданные во время выполнения, вам лучше взглянуть на eventmachine и сделать его сервером (поэтому ваше приложение Django может подключиться к нему и запросить генерацию HTML, не открывая новое переводчик каждый раз).

Вопрос 3: может быть, это самое сложное. Есть GHRML, который заброшен; SHPAML, который только реализует небольшое подмножество HAML, DMSL, которое в настоящее время очень экспериментально, но уже поддерживает большую часть HAML, а также вызывает код python, но не имеет поддержки Markdown или Textile. Но, по-видимому, нет альтернативы Ruby HAML, которая поддерживает все необходимые функции.

+0

http://stackoverflow.com/questions/519671/is-there-a-haml-implementation-for-use-with-python-and-django/2765628#2765628 – Andrei

0

Хотя это может привести к большим проблемам, чем того стоит, возможно, возможно использовать Java или.NET и по-прежнему запускайте приложение Django в Jython или IronPython (с некоторыми незначительными корректировками, я уверен), а также смогу использовать GAMI-маркер Ruby от JRuby или IronRuby.

Уверен, что в этом будет какое-то причуда, но я уверен, что это будет возможно.

Опять же, это, вероятно, намного больше проблем, чем это стоит (учитывая, что вам нужно перенести приложение на совершенно новую платформу), но это был бы очень забавный проект для работы.

0

Я настоятельно рекомендую вам не раскошелиться все процессы из ваших представлений, потому что накладные расходы значительно.

У вас должен быть постоянный рубиновый процесс для обслуживания ваших шаблонов для вас и вызывать его из вашего кода django. Я оставляю вам технологию IPC, но очевидный выбор будет либо своего рода технологией очередности сообщений, либо говорить HTTP через сокет для рубинового процесса.