Archivi per la categoria ‘Django’

Zope su Django Turnkey Appliance

Oggi a scopo di test preventivo per un futuro cambio di piattaforma per un nostro cliente, abbiamo affrontato l’installazione di Zope sulla macchina virtuale Appliance Django Turnkey.Non è assolutamente una impresa titanica, ma voglio prendere nota di alcuni passaggi cruciali.Installazione di Zope:

apt-get install zope2.10

Zope viene installato sulla directory: /usr/lib/Zope2.10/Ora dobbiamo creare l’instanza di Zope:

 cd  /usr/lib/zope2.10/
 python bin/mkzopeinstance.py  -d instance -u admin:admin
 python bin/mkzeoinstance.py zeo $1

Se tutto va come dovrebbe andare, siamo pronti per avviare Zope:

instance/bin/zopectl start

E possiamo puntare il browser alla root della nostra applicazione, o al /manage/ con nome admin, password admin.N.B.Se il runzope non avvia il servizio, ma genera un errore, potrebbe essere per la versione di python sbagliata, e si risolve facilmente modificando il file runzope, modificando la seguente riga:

PYTHON="/usr/bin/python"

con la seguente:

PYTHON="/usr/bin/python2.4"

 



Django Turnkey VmWare Appliance

Da diversi giorni stiamo lavorando su una turnkey appliance esplicitamente creata per Django.Stiamo facendo test sulla sicurezza della macchina e sulla affidabilità, oltre ovviamente a prove di praticità nell’uso quotidiano per lo sviluppo, la manutenzione e assistenza a siti Django.La macchina VmWare è disponibile a questo indirizzo: http://www.vmware.com/appliances/directory/82433La macchina è molto leggera e arriva con già pronta per la messa in produzione, con una interfaccia di amministrazione web: webmin, che permette di controllare Apache e MySQL  in modo molto dettagliato.

Django Custom Admin

E’ possibile modificare i templates e i comportamenti standard della parte di amministrazione di Django, in modo molto semplice e veloce. Da questo post alcuni spunti interessanti.

Django Db Reverse Engeneering

Ancora su Django, dove è possibile ricreare il modello di Django
deducendolo da una struttura di database già esistente, utilizzando l’inspect db:
http://docs.djangoproject.com/en/dev/howto/legacy-databases/

WebServices & Django

Sono alla ricerca di un framework per pubblicare un WebService, posssibilmente con il suo WSDL,scritto in Python, dato che l’applicazione gemella è tutta scritta in Python all’interno di Zope.Per quanto riguarda Zope non ho trovato niente di versatile, mentre per Django le mie ricerchemi hanno portato felici risultati: soaplib per python!Qui si trova un esempio di un metodo ws soap pubblicato da django: http://www.djangosnippets.org/snippets/979Qui invece l’indirizzo al Trac del progetto soaplib: http://trac.optio.webfactional.com/wiki/soaplibIl soaplib_handler.py aveva alcuni bug, utilizzando questo script viene risolto:http://www.djangosnippets.org/snippets/979/#c1655Per fare questo esperimento ho affrontato anche l’installazione di Django su Windows,voglio documentare velocemente i link utili:http://rubberduck.it/blog/?p=18La mia installazione dava alcuni problemi, fra cui:l’assenza del modulo MySqlDb: http://www.codegood.com/archives/4la mancanza del modulo pytz: http://webscripts.softpedia.com/scriptDownload/Pytz–Download-18101.html

TinyMCE e Django

Ho appena finito di integrare TinyMCE con il backoffice Admin di Django.

E’ stato piuttosto semplice grazie alle pagine guida qui sotto:

Guida passo a passo di  Bill de hOra

Tutorial ufficiale Django

Riassumo velocemente i passi da seguire:

  • scaricare TinyMCE
  • caricare TinyMCE all’interno di django/media
  • creare un file js: textareas.js che funziona da configuratore
  • modificare la classe Admin, aggiungendo la class Media,
    che passa i path ai files base tinyMCE e al textareas.js, come qui sotto:
    class Media:
    js = (‘tiny_mce/tiny_mce.js’,
    ‘Scripts/textareas.js’,)

Ed il gioco è fatto, avrete nel backoffice di Django per le classi abilitate, il TinyMCE Editor!

Python #3 (Django #1)

Come primo Python Web Framework da passare in rassegna ho scelto Django, un framework con ORM, interfaccia di amministrazione automatica, sistema di templating, di cache e di internazionalizzazione… sembra tutto molto interessante.

  1. Per prima cosa quindi ho bisogno di installare un server di database e le rispettive librerie Python. Decido di usare MySql:
    sudo apt-get install mysql-server python-mysqldb
  2. Poi installo Django, scaricando il package più recente da: downloads Django

    tar xzvf Django-1.0.2-final.tar.gz
    cd Django-1.0.2-final
    sudo python setup.py install
  3. Ora mi creo un symLink dalla cartella di django alla usr/bin:
    sudo ln -s /usr/local/lib/python2.5/site-packages /usr/local/bin
  4. Ok, tutto pronto per creare un nuovo progetto, quindi mi posiziono sulla cartella dove organizzerò tutti i miei progetti, non nello stile PHP (/var/www) per una maggiore sicurezza, ma in home/user/… quindi lancio il comando per la creazione del progetto:
    sudo django-admin startproject NomeProgetto

    Startproject creerà una cartella NomeProgetto con all’interno 4 files .py (__init__.py, manage.py, settings.py, urls.py) .
  5. Ora dall’interno della cartella NomeProgetto, invoco la creazione della mia applicazione:python manage.py startapp NomeApplicazioneQuesto comando creerà la cartella NomeApplicazione con all’interno i files:__init__.py, models.py, views.py .
  6. Ora posso iniziare a disegnare il modello della mia applicazione, modificando il file NomeApplicazione/models.py
    (utili queste pagine: pagina di documentazione django per la scritura di modelli pagina di documentazione django per i tipi di campi utilizzabili nel modello)
  7. Di seguito modifico il file NomeSito/admin.py per attivare l’amministrazione per le classi di modello disegnate in precedenza:
    from NomeSito.NomeApplicazione.models import NomeClasse
    from django.contrib import admin
    admin.site.register(NomeClasse)
  8. Fatto ciò, apro il file NomeProgetto/settings.py e configuro la sezione database e INSTALLED_APPS.
    Per il database configuro la connessione ad un db fra quelli disponibili (MySql, PostgreSQL, SQLite):
    DATABASE_ENGINE
    DATABASE_NAME
    DATABASE_USER
    DATABASE_PASSWORD
    DATABASE_HOST
    DATABASE_PORT

    Per le installed apps, devo aggiungere due applicazioni: la mia NomeApplicazione e la applicazione per l’amministrazione ‘django.contrib.admin’
  9. Modifico poi il file NomeProgetto/urls.py per attivare la parte di amministrazione (scommentando dove trovo il commento: ‘# Uncomment .. to enable the admin”
  10. Ora posso lanciare il comando syncdb che creerà le tabelle per le INSTALLED_APPS di Django:python manage.py syncdbLo script lancia la creazione delle tabelle per le INSTALLED_APPS che ancora non esistono sul database. Se non è mai stato creato un utente amministratore, questo script ci chiederà di configurarne uno.
  11. Per verificare che tutto sia funzionante, entro nella cartella NomeProgetto e lancio:python manage.py runserver 8080Se tutto funziona correttamente, l’output sarà qualcosa come questo:Validating models...
    0 errors found.
    Django version 1.0.2 final, using settings ‘NomeApplicazione.settings’
    Development server is running at http://127.0.0.1:8080/
    Quit the server with CONTROL-C.
  12. Ora puntiamo il browser all’indirizzo sopra indicato (http://127.0.0.1:8080/) e dovremmo vedere una pagina “Welcome to Django”.
    Puntando il browser invece all’indirizzo http://127.0.0.1:8080/amin accederemo alla parte di amministrazione.
  13. Per testare invece le API Django ed il nostro modello a riga di comando, possiamo lanciare:
    python manage.py shell

Prima giornata con Django conclusa. Sono molto soddisfatto e sorpreso per le features di Django, infatti disegnando solo alcune classi di modello, ho a disposizione già tutti i metodi CRUD ed una ottima interfaccia di amministrazione back-office già pronta e funzionante out-of-the-box.

Advertising