Совместное использование ASP и Python

Нужда заставила использовать Python в классическом ASP. Заставить все это работать не так сложно, информация по регистрации обработчика достаточно. Например я начинал со статьи на 4Guys. Там же есть информация про особенности работы с перечислениями в объекте Request. Но достаточно быстро всплыло две проблемы, решение которых заняло некоторое время.

  1. Обращение к функциям написанным на VBScript.
  2. Отступы Python’а в блоках с HTML.

Обращаться к функциям на VBScript оказалось достаточно просто. Если у нас есть функция myVBSFunc() оформленная в ASP’ом блоке <script>, то из питона к ней нужно обращаться так:

ScriptingNamespace.myVBSFunc()

С отступами найти решение было несколько сложнее. Допустим мы хотим написать:

if True:
    %>Some HTML here<%
    someCodeHere...

То при исполнении этот код преобразуется в нечто подобное:

if True:

Response.WriteBlock(1)

    someCodeHere...

Как видим, были добавлены перевод строки до и после. А вызов метода WriteBlock не имеет отступа. И мы сразу получим IndentationError. Чтобы избежать этого, нам нужно блок HTML заключить в скобки:

if True:
    (%>Some HTML here<%)
    someCodeHere...

И так как Python’у все равно на отступы внутри скобок этот код отработает нормально.

Надеюсь эта заметка поможет кому-нибудь.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *