用Python编写访问Django数据库功能的程序的最简单方法
我有一个网站,它定期从RSS源获取信息(现在是手动获取,这就是我的问题)。目前这个功能是通过一个普通的Django视图来实现的,我觉得这样不太好。我想要一个Python程序,能够通过定时任务自动运行,而不是手动去访问特定的URL来更新信息。
有没有简单的方法让我的Python程序可以访问我的Django应用和Django的数据库操作工具(ORM)呢?
5 个回答
2
编辑: 针对Django 1.7
import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "your_project_name.settings")
django.setup()
#have fun
被选中的答案从Django 1.4开始不再推荐使用
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "your_project_name.settings")
#from your_app_name import models
##have fun
9
这里提到的所有方法的一个替代方案是把你的定时任务写成一个自定义的 ./manage.py
命令。这其实很简单,而且你可以在命令行或者你的定时任务设置中使用 ./manage.py yourcommand
来执行它。
相关文档的信息比较少,但它确实建议你查看现有命令的代码,这样你就可以用它们作为你自己命令的模板。
13
from django.core.management import setup_environ
from django.core.mail import EmailMultiAlternatives, send_mail
from django.contrib.auth.models import User
import settings
from my.app.models import *
setup_environ(settings)
这是我为一个每天给相关人员发送更新邮件的定时任务(cron)所做的设置。这个.py文件放在我Django应用的根目录下,所以导入设置时会相应地反映这个位置。