Django-fr

Forum

#1 26-04-2013 16:19:02

chris
Membre
Inscription : 22-12-2012
Messages : 5

Chtite question prise de tête avec Django et extjs

Bonjour la foule,
Je connais un peu django et python, et je viens de découvrir Extjs et comme je suis flemmard
et que j'aime pas coder 36 fois la même chose j'ai imaginé le bidule suivant que je soumets a votre approbation technique :

Le principe est le suivant :

j'ai un template basic avec une variable dans le bloc head

dans cette variable je fourre tout un script Extjs que j'ai généré depuis mon views.py

En gros je génère mon script à la volée smile et cela fonctionne plutôt bien on doit pouvoir étendre le truc
au grille au formulaire au tab etc ...

cela ouvre de nombreuses perspectives intéressantes

par contre je n'ai aucune idée de l'impact de cette technique sur la sécurité ou si cela existe déjà, si je viens de réinventer l'eau chaude, si je dois changer de métier ...
et c'est la que je me permets de vous soumettre la question

A bientôt
Chris


Exemple de code

une template (rien de phénomenal) :

{% extends "base.html" %}

{% block title %} PAGE 1{% endblock %}
{% block head %}
    <script type='text/javascript'>
    {{ SCRIPT_EXTJS|safe }}      <= ICI LE SCRIPT
    </script>
{% endblock %}
{% block content %}
<p>
Page 1 de TEST
</p>
{% endblock %}

un views.py : (les données sont en dur dans le texte mais je compte utiliser Ajax smile
le code extjs viens de http://docs.sencha.com/extjs/4.2.0/#!/guide/grid

def page42(request):
    SCRIPT_EXTJS = """
    Ext.onReady(function(){

    Ext.define('User', {
    extend: 'Ext.data.Model',
    fields:%s   <=============== variable ici
    });

    var userStore = Ext.create('Ext.data.Store', {
    model: 'User',
    data: [
    { name: 'Lisa', email: 'lisa@simpsons.com', phone: '555-111-1224' },
    { name: 'Bart', email: 'bart@simpsons.com', phone: '555-222-1234' },
    { name: 'Homer', email: 'home@simpsons.com', phone: '555-222-1244' },
    { name: 'Marge', email: 'marge@simpsons.com', phone: '555-222-1254' }
    ]
    });

    Ext.create('Ext.grid.Panel', {
        renderTo: Ext.getBody(),
        store: userStore,
        width: 400,
        height: 200,
        title: '%s', <============= variable ici
        columns: [
            {
                text: 'Name',
                width: 100,
                sortable: false,
                hideable: false,
                dataIndex: '%s'   <============= variable ici aussi
            },
            {
                text: 'Email Address',
                width: 150,
                dataIndex: '%s',   <============= variable la 
                hidden: true
            },
            {
                text: 'Phone Number',
                flex: 1,
                dataIndex: '%s'  <============= variable ici aussi
            }
        ]
        });

    });

    """
    f = ['name', 'email', 'phone'] ## la liste des champs 
    S = SCRIPT_EXTJS % ( simplejson.dumps(f), 'TITRE GRILLE', f[0], f[1], f[2] ) ## on transmets le tout
    template = 'hello_extjs/page42.html'
    return render( request, template, { 'SCRIPT_EXTJS':S } )

Hors ligne

Pied de page des forums