Můj web

Wysiwyg v Django administraci

Publikováno 5.9.2012

Jak už jsem psal dříve wysiwyg neboli richtext editory nemám příliš v lásce. Ale co naplat, uživatelé potažmo zákazníci jsou jiného názoru. Takže tentokrát budeme roubovat editor do Django administrace.

Vybral jsem tentokrát dijit.Editor, který se stahuje z Google CDN – popis instalace do Djanga je v tomto článku. A tady by mohl článek skončit. Ale to by bylo trochu zbytečné psát. Narazil jsem totiž na problém. Správná administrace má totiž běžet na HTTPS. Uživatel při přihlášení zadává přihlašovací jméno a heslo a to nemůžeme nechat běhat po síti jen tak v otevřené formě. Zašifrujeme ho pomocí SSL. Také vcelku standardní věc. Najednou nám ale náš editor stahuje součásti, které nejsou zabezpečené – při stahování z Google CDN se tam vloudil odkaz na čisté HTTP. Někdo by to hodil za hlavu – v některých prohlížečích si uživatel tohoto ani nevšimne. Jak se ale problému zbavit?

Je nutné provést úpravu admin šablony. Přidáme do ní konfiguraci naší milé javascriptové aplikace. Jelikož editor používáme pouze v šabloně pro editaci objektu, vytvoříme nový soubor /projects/myproject/tpl/admin/myapp/mymodel/change_form.html Do něj vložíme konfiguraci, která obsahuje URL včetně HTTPS odkud se mají součásti aplikace stahovat:

{% extends "admin/change_form.html" %}
{% block extrahead %}
<script type="text/javascript">
djConfig = {
 modulePaths: {
 "dojo": "https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojo",
 "dijit": "https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dijit",
 "dojox": "https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojox"
 }
};
</script>
{{ block.super }}
{% endblock %}

Nic víc, nic méně soubor neobsahuje. Pozměníme tím vlastně standardní admin šablonu. Měníme část šablony extrahead, ale nesmíme opomenout vložit další styly a skripty nastavené v aplikaci do hlavičky HTML pomocí direktivy block.super.

Komentáře

Komentáře jsou vypnuty.