"creare uno script python e installare quello script come cron (con DJANGO _SETTINGS _MODULE setup delle variabili prima di eseguire lo script)?"
In primo luogo, essere sicuri di dichiarare le forme in un modulo separato (ad esempio forms.py
)
Quindi, è possibile scrivere caricatori batch che assomigliano a questo. (Abbiamo un sacco di questi.)
from myapp.forms import MyObjectLoadForm
from myapp.models import MyObject
import xml.etree.ElementTree as ET
def xmlToDict(element):
return dict(
field1= element.findtext('tag1'),
field2= element.findtext('tag2'),
)
def loadRow(aDict):
f= MyObjectLoadForm(aDict)
if f.is_valid():
f.save()
def parseAndLoad(someFile):
doc= ET.parse(someFile).getroot()
for tag in doc.getiterator("someTag")
loadRow(xmlToDict(tag))
Si noti che c'è ben poco di elaborazione unica qui - è solo utilizza la stessa forma e modello come le funzioni di visualizzazione.
Inseriamo questi script batch con la nostra applicazione Django, poiché dipende dall'applicazione models.py
e forms.py
.
L'unica parte "interessante" è trasformare la riga XML in un dizionario in modo che funzioni perfettamente con le forme di Django. Oltre a questo, questo programma da riga di comando utilizza tutti gli stessi componenti Django della tua vista.
Probabilmente vorrai aggiungere opzioni di analisi e registrazione per creare un'app completa da riga di comando. Noterai inoltre che gran parte della logica è generica: solo la funzione xmlToDict
è veramente unica. Chiamiamo questi "Builder" e abbiamo una gerarchia di classi in modo che i nostri Builder siano tutti mappature polimorfiche dai nostri documenti sorgente ai dizionari Python.
fonte
2009-02-07 19:26:13
Posso farlo da entrambi i lati, salvarlo dalla vista o salvarlo dallo script python. – Marius
Un comando di gestione personalizzato è una soluzione migliore rispetto al munging delle impostazioni dell'ambiente Django. Vedi la risposta di Daevaorn. –