2013-02-15 8 views
5

Uczę się, jak rozwijać stronę internetową w ramach Django. Jest coś, czego nie rozumiem w szablonie pliku html.Jaka dawka ma znak klamrowy i procentowy w html?

Widziałem samouczek używany nawiasy klamrowe (<% if ... %> <% endif %> itp.) Do osadzenia logiki w kodzie. Ale kiedy próbuję użyć tej składni na serwerze innym niż Django (Apache), ta składnia nie została zinterpretowana i mogę zobaczyć moją <% if ... %> ... bezpośrednio na mojej stronie.

Nie wiem, dlaczego tak jest.

Więc ta składnia nie jest częścią HTML, ale raczej częścią Django, więc może być przez nią interpretowana?

+9

@Mansfield kodu php? Spróbuj ponownie. –

+0

@ Chris. Ups :(Myślałem o smarty z jakiegoś szalonego powodu ... – Mansfield

+2

'<'/'>' nie są nawiasami "kręcone"; '{'/'}' są "kręcone" –

Odpowiedz

13

Przede wszystkim poprawne tagi dla języka szablonów Django to {% %}, a nie <? ?>.

I masz rację, że to część Django. Jest to przykład domain specific language, który, jak głosi Wikipedia, jest językiem wymyślonym dla określonego zadania. W tym przypadku język szablonów Django jest zbudowany tak, aby obsługiwał dobrze szablony.

Działa, ponieważ Django jest dostarczane z parser w celu interpretacji języka i zrozumienia tego. Analizator składni przyjmuje ciąg znaków, który w przeciwnym razie nie miałby znaczenia w HTML lub innym języku, takim jak {% block pasta%} i zamienia go w coś znaczącego. W tym przypadku ostatecznie generuje HTML.

Zdarza się, że można napisać własny parser w dowolnym języku, aby zinterpretować język szablonów Django, lub nawet całkowicie napisać nowy język. Ale trudność takiego zadania wzrasta, ponieważ twój język staje się bardziej złożony, a także zależy od wybranego języka. PHP jest notorycznie złe w analizie, podczas gdy inne języki, takie jak Perl, są w tym lepsze. Ogólnie rzecz biorąc o wiele łatwiej jest po prostu run a search i użyć wbudowanego analizatora składni zamiast ponownego wynajdywania koła. Mimo że oczywiście jest dużo mniej przyjemny sposób się do tego zabrać :)

p.s. This might be of interest to you.

+0

To nie jest część Django !!!! Jest to część django: {%%} Nie to: <% %>. – santiagobasulto

+0

To prawda, To prawda, ale moja odpowiedź jest poprawna, tak? Dodam do niego notatkę, że znaczniki, których użył powyżej, nie są qui te racje. – jmeas

Powiązane problemy