"tạo tập lệnh python và cài đặt tập lệnh đó dưới dạng cron (với thiết lập biến DJANGO _SETTINGS _MODULE trước khi thực thi tập lệnh)?"
Đầu tiên, hãy chắc chắn để khai báo hình thức của bạn trong một mô-đun riêng biệt (ví dụ forms.py
)
Sau đó, bạn có thể viết bộ tải hàng loạt trông như thế này. (Chúng tôi có rất nhiều trong số này.)
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))
Lưu ý rằng có rất ít xử lý độc đáo ở đây - nó chỉ sử dụng cùng một Mẫu và Mẫu làm chức năng xem của bạn.
Chúng tôi đặt các tập lệnh theo lô này bằng ứng dụng Django của chúng tôi, vì nó phụ thuộc vào ứng dụng models.py
và forms.py
của ứng dụng.
Phần "thú vị" duy nhất là chuyển đổi hàng XML thành từ điển để nó hoạt động liên tục với các biểu mẫu của Django. Ngoài ra, chương trình dòng lệnh này sử dụng tất cả các thành phần Django giống như chế độ xem của bạn.
Có thể bạn sẽ muốn thêm tùy chọn phân tích cú pháp và ghi nhật ký để tạo một ứng dụng dòng lệnh hoàn chỉnh trong số này. Bạn cũng sẽ nhận thấy rằng phần lớn logic là chung chung - chỉ chức năng xmlToDict
mới thực sự là duy nhất. Chúng tôi gọi những "Nhà xây dựng" này và có phân cấp lớp để Nhà xây dựng của chúng tôi là tất cả các ánh xạ đa hình từ các tài liệu nguồn của chúng tôi đến các từ điển Python.
Nguồn
2009-02-07 19:26:13
Tôi có thể thực hiện việc này từ cả hai phía, lưu từ chế độ xem hoặc lưu từ tập lệnh python. – Marius
Lệnh quản lý tùy chỉnh là giải pháp tốt hơn so với việc tự cài đặt môi trường Django. Xem câu trả lời của Daevaorn. –