XHPy простира Python синтаксис, така че XML фрагменти стават валидни Python изрази.
<Силни> Предимства
& Nbsp; * Simplicity: напиши UI логика в един прост, изразителен синтаксис, без нуждата от външни шаблони или темплейти езици.
& Nbsp; * Гъвкавост: използване на Питон изрази свободно XHPy тагове, както и обратното.
& Nbsp; * Security: ползват с автоматично избяга от текст в рамките XHPy тагове.
& Nbsp; * Многократното използване: изграждане многократна употреба компоненти, като subclassing: X: елемент.
<Силен> Пример
В bar.py:
от xhpy.init внос register_xhpy_module
register_xhpy_module ("трънки")
внос Foo
В foo.py:
от xhpy.pylib внос *
клас: UI: Foo (: X: елемент):
& Nbsp; атрибут списък бар
& Nbsp; категория% поток
& Nbsp; Def направи (самостоятелно):
& Nbsp; а = <ул />
& Nbsp; за б в self.getAttribute ("Бар"):
& Nbsp; a.appendChild (
& Nbsp; върне
печат <Разделение клас = "Баз">
Сега можем да тичам bar.py като нормална Python скрипт:
$ Питон bar.py
<Разделение клас = "Баз">
- 0
- 1
- 2
Поздравявам Ви! Вие току-що написах първата си откъс от XHPy.
<Силен> Синтаксис
XHPy добавя някои нови синтаксиса на Python. Ред по ред време преиграване!
от xhpy.init внос register_xhpy_module
Това инициализира XHPy и ви позволява да се регистрирате модули да се тълкува като XHPy.
register_xhpy_module ("трънки")
Сега модула Foo в foo.py ще се тълкува като XHPy когато се внасят. Ако Foo бяха пакет, всички негови подмодули също ще бъдат регистрирани; това е полезно за регистриране на UI библиотеки.
внос Foo
За реално използване XHPy, обаче, вероятно ще искате основната библиотека:
от xhpy.pylib внос *
Сега имате достъп до всички стандартни HTML 4.0 елементи, на: X: елемент базов клас (това е, което се изгради потребителски компоненти на върха!), И някои комунални услуги.
клас: UI: Foo (: X: елемент):
Осъществяване на нови компоненти е лесно: просто подклас: X: елемент. За вашия компонент клас да бъде регистрирано, то трябва да се започне с: - това ясно отличава устройствата от обикновени класове Python.
приписват списък бар
Това е декларация атрибут, което означава, че: UI: Foo позволява бар атрибути върху
по-късно - като XHP, XHPy използва XML атрибут синтаксис.
категория% потока
Това е декларация категория -: UI: Foo е част от категорията% поток. Категориите са предимно полезни като начин за идентифициране на елементи, които са подобни, без използване наследство; Например, <а> таг в pylib.html има
деца (pcdata |% поток) *
което показва, че неговите деца трябва или да съдържат текст или да бъдат от категорията% поток. (Така че можем да сложим
Def направи (самостоятелно):
Когато отпечатвате: X: елемент (или се обадете на ул върху него), рендера () метод се извиква; това е мястото, където да поставите вашия UI логика.
а = <ул />
за б в self.getAttribute ("Бар"):
& Nbsp; a.appendChild (
върне
Ето,
- , който ви позволява да се изгради неподреден списък от списъка на Python. Стандартни HTML елементи като
- автоматично стават - освен, че в XHPy, можете да използвате Python изразяване на тагове, така че
{Б}
се заменя със стойността на б. Обърнете внимание на използването на getAttribute () и appendChild ():
self.getAttribute ("Бар")
извежда стойността на атрибут бар (в този случай, кръг (3)), като има предвид,
a.appendChild ( - {B}, )
- {B}, като дете на = <ул />.
- Python
- и
добавя
XHPy до голяма степен се основава на разстояние XHP; за повече информация относно последното, вижте `XHP уикито
& Nbsp; * имена XHPy клас могат да се използват навсякъде обикновени класове Python можете;
& Nbsp; * XHPy тагове пренебрегват вътрешния празно, но трябва да се подчиняват външно идентификационния и ред допълнителни правила.
Повече за последната точка:
Def Foo (HREF):
& Nbsp; връщане <един HREF = {HREF}>
Def бар (HREF):
& Nbsp; върне
& Nbsp; <а HREF = {HREF}>
са валидни, докато
Def Foo (HREF):
& Nbsp; върне
& Nbsp; <а HREF = {HREF}>
& Nbsp;
не е, тъй като въвежда допълнително dedent след .
<Силен> Как работи
Когато ти
внос xhpy.init
XHPy инсталира кука внос. Куката капани последвалите изявления за внос, които се стартират чрез Препроцесор, че прави разбор надмножество на Python. Това Препроцесор превежда XHPy тагове и имената на класовете за валидно Python, тогава стартира преведена кода по обхват модул.
Това е подобно на начина на функциониране на XHP, с изключение на:
& Nbsp; * с, например, pythonenv, винаги можете да използвате XHPy дори и без достъп до цялата система Python инсталационен пакет директории;
. & Nbsp; * по подразбиране, Python компилира байткод .pyc файлове от вашите модули, така че предварителна обработка трябва да се направи веднъж, когато един модул е първата внасят само
<силни> Изисквания силни>:
Коментари не е намерена