ccnmtldjango è un modello di Incolla che usiamo per sostituire il comando standard startproject django-admin.py.
Fa lo stesso compito fondamentale di creare una struttura di directory per un app Django, ma è stato esteso per implementare un sacco di funzionalità specifiche CCNMTL e la configurazione.
Che cosa prevede per noi che startproject non:
- Django vento (un ponte Django per il servizio di autenticazione centrale di Columbia - http://www.jasig.org/cas/deployments/columbia-university) è inclusa e configurato di default così le nostre applicazioni possono utilizzare WIND per auth automaticamente. Vale a dire, chiunque con un Columbia UNI per default avrà un account. I unis sviluppatori CCNMTL vengono automaticamente impostati come superuser, e la affil gruppo che il personale CCNMTL tutti hanno viene mappato automaticamente al personale. Questi sono valori predefiniti generalmente utili per noi.
- Virtualenv e configurazione pip con sorgenti del bundle e bootstrappable, la baracca di manage.py impostato per usarlo. Questa sostanza si inserisce nella nostra strategia di distribuzione e contenimento automatizzato di uno stadio.
- Sorl.thumbnail (una comoda immagine da dandy biblioteca miniature) è incluso di default
- Flatpages abilitati
- Impostazioni divisi per dev / prod
- Apache / django.wsgi configurato
- Campione di configurazione di apache per la configurazione mod_wsgi uso di ambienti virtuali (tutto è ottimizzato in modo che possiamo solo link simbolico il file di configurazione di apache generato nel del nostro server di produzione / etc / apache / siti abilitati per directory / ed è bello andare)
- Dirs multimediali per dev e prod configurati
- Smartif incluso (https://github.com/thraxil/django-smartif/tree/master)
- Template_utils incluse (http://code.google.com/p/django-template-utils/) così come feedparser, che dipende per le cose di alimentazione
- Django-typogrify incluso (http://code.google.com/p/typogrify/) insieme smartypants.py (che utilizza)
- Django-sentinella incluso (https://github.com/dcramer/django-sentry) e configurato per il nostro setup
- Django-munin incluso (https://github.com/ccnmtl/django-munin)
- South è incluso per le migrazioni di database
- Django-fastidioso è incluso (mi piacerender_to)
- Django-naso installato e configurato come prova corridore (molto più bello!)
- Sqlite in-memory database utilizzato per i test unitari
- Test a sud saltati automaticamente prova ./manage.py (si rompono)
- Django_compressor aggiunto e configurato per comprimere css sulla produzione
- Uuid.py
- Jquery (1.4.2, minified) incluso
- hs.js
- tabber.js
- widget.js
- tablesort.js
- CSS richiesto per le suddette librerie js è incluso nel site.css predefinita
- Modelli di base inclusi
- Django amministratore abilitato (e autenticato con WIND per tlc)
- Restclient
- Httplib2
- ImageUploader
- Markdown è incluso e attivato
- Database default a PostgreSQL (causa MySQL è teh succhiare)
- Middleware transazione abilitato di default (la corruzione dei dati causa è teh succhiare)
- Set fuso orario
- I18n spento (siamo purtroppo monolingue alcun senso negarlo.)
- PIL
- Psycopg2 (spogliato della sua dipendenza mx.DateTime)
- Un design piacevole modello predefinito con i modelli di base alternative per layout a più colonne.
Per utilizzare ccnmtldjango, è necessario python 2.6+, virtualenv, pip, e una recente setuptools installati sulla macchina.
In primo luogo, se già non lo hanno ccnmtldjango installato, fare
& Nbsp; easy_install ccnmtldjango
Dovrebbe tirare automaticamente le dipendenze necessarie (solo PasteScript, in realtà).
Esecuzione
& Nbsp; paster creare --list-modelli
dovrebbe includere ccnmtldjango
Ora, ad avviare rapidamente un progetto Django, fare
& Nbsp; paster creare --template = ccnmtldjango MyProjectName
MyProjectName dovrebbe essere un nome del modulo python (cioè, in minuscolo, senza punteggiatura, etc). Si creerà una directory chiamata MyProjectName che ha un progetto Django in esso.
paster ancora non fa nulla con i permessi dei file, quindi abbiamo ancora bisogno di impostare manualmente un paio:
& Nbsp; cd MyProjectName
& Nbsp; chmod 755 bootstrap.py manage.py
Non riuscivo a trovare un modo per inserire stringhe casuali nel codice via Paste Template, quindi una cosa che ccnmtldjango manca rispetto ad un normale startproject Django è che la variabile SECRET_KEY in settings_shared.py è sempre la stessa di default. Questo non è chiaramente una buona idea, quindi assicuratevi di cambiare che a qualche altra stringa casuale che sarà unico al vostro progetto.
Questo è probabilmente un buon punto di controllare il progetto in controllo di versione.
Usiamo contenimento per Django troppo, con virtualenv:
& Nbsp; ./ bootstrap.py
Che creerà un cinque directory che contiene un virtualenv e ha avuto tutte le librerie nella directory requisiti / src installata in esso (questo include Django stesso). La ve directory non deve mai essere controllato in svn dal momento che è generato. Se avete bisogno di altre librerie per la vostra applicazione, li impacchettare come tarball e rilasciarli nella directory requisiti / src /, aggiungerli alle esigenze / libs.txt o requisiti / apps.txt (a seconda che si tratti di librerie Python regolari o django apps) poi rieseguire ./bootstrap.py.
Tenete a mente che con virtualenv, non c'è bisogno di attivare un ambiente. Invece, una ve ha una directory bin che contiene un eseguibile python. Se si utilizza invece che del file eseguibile sistema python, utilizza le librerie in tale virtualenv.
ccnmtldjango presuppone che il progetto utilizzerà un database PostgreSQL con lo stesso nome del progetto. Così, per il nostro esempio, si dovrebbe allora fare:
& Nbsp; createdb MyProjectName
ed è tutto pronto per usarlo:
& Nbsp; ./ manage.py syncdb
installerà le tabelle che Django esigenze per la sua applicazioni comuni (siti, sessioni, admin, flatpages, ecc) e hai creare un utente amministratore.
Il syncdb ./manage.py imposta automagically di un "example.com" sito. Questo dovrebbe essere modificato con un dominio del sito (ad esempio localhost: 8000) tramite la console di amministrazione. http: // localhost: 8000 / admin / sites / site /. (Se è importante per la vostra applicazione)
L'applicazione è pronta per l'esecuzione ora:
& Nbsp; ./ manage.py runserver
inizierà un server su http: // localhost: 8000 /. Andare lì vi darà un 404 poichè non c'è niente nella domanda ancora, ma l'applicazione di amministrazione dovrebbero essere accessibili (tramite l'account utente creato durante syncdb, o via WIND agli utenti tlc (o quelli specificati nell'elenco WIND_SUPERUSER_MAPPER_GROUPS in settings_shared.py .) Quindi, andare avanti e accedere a http: // localhost: 8000 / admin /
Anche senza un codice specifico di applicazione, flatpages è incluso in modo da poter mettere contenuti sul web subito.
Da questo punto fuori, è lo sviluppo di base Django. Probabilmente si vorrà fare un startApp ./manage.py per creare la propria applicazione all'interno del progetto, e così via.
Impostazione di una nuova cassa
La prima volta che il check out di un progetto ccnmtl-modello esistente da svn / git:
& Nbsp; ./ bootstrap.py
./manage.py runserver
Differenze rispetto a un normale installazione Django
Ovviamente, un gruppo di librerie e come sono stati aggiunti e c'è il tutto virtualenv. Ci sono anche alcune differenze da un progetto standard Django (cioè, il frutto di startproject django-admin.py) che si dovrebbe essere awayre di.
In primo luogo, le impostazioni sono state divise per rendere dev e prod implementazioni più facile da configurare. Un django regolare installazione avrà un file settings.py che contiene tutte le impostazioni. Gli sviluppatori Django solito copiare il file delle impostazioni e apportare le modifiche durante la distribuzione di produzione. ccnmtldjango sfrutta il fatto che le impostazioni sono solo codice python e possono essere importati e sovrascritti. Quindi abbiamo un settings_shared.py che contiene la maggior parte delle impostazioni. settings.py (che dovrebbe essere utilizzato per lo sviluppo) e settings_production.py quindi importare tutto da da settings_shared.py. settings_production.py poi sostituisce anche le impostazioni che dovrebbero essere diversi nella distribuzione di produzione (di solito percorsi dei modelli e file multimediali).
TransactionMiddleware è abilitato di default. Ciò significa che ogni richiesta HTTP ottiene una transazione che impegna o ripristina alla fine della richiesta. La configurazione di default django per qualche motivo fa le cose in stile "autocommit" dove ogni operazione di database viene eseguito nella propria transazione, indipendentemente dalla richiesta HTTP.
L'altra grande differenza di essere a conoscenza è la directory di modelli di alto livello. Procedura Django standard è quello di avere una directory modelli in ogni applicazione nel progetto che contiene i modelli per tale applicazione. ccnmtldjango ha la directory di modelli di alto livello per un paio di motivi. In primo luogo, dal momento che paster crea solo la directory livello di progetto e non le directory dell'applicazione, è stato l'unico modo per farlo includere un base.html predefinito, admin / login.html, registrazione / login.html e così via. Ho anche come l'approccio di avere una directory di modelli a livello di progetto, in particolare per il modello base.html. Django permette più directory modello e le ricerche attraverso di loro in un ordine prevedibile, in modo da poter (e probabilmente deve) ancora creare directory di modello a livello di applicazione, elencarli in TEMPLATE_DIRS vista del livello di un singolo progetto, e sovrascrivere qualunque modelli che vuoi in quelle.
I18N è spento perché è abbastanza raro che facciamo roba multilingue ed è una performance hit per averlo abilitato se non è in uso. . Se avete bisogno di fare un sito django multilingue, solo riattivarlo e mettersi al lavoro
Requisiti :
- Python
I commenti non trovato