2019年03月31日
阅读: 3289
为Django的manage.py添加自定义命令
友情提醒:本文最后更新于 2092 天前,文中所描述的信息可能已发生改变,请谨慎使用。
有时候会有这样的需求,为django执行一些定时任务,比如通知搜索引擎,例如百度,提交网站的一些地址给他们,通过为django的
manage.py
添加自定义命令可以很容易的解决这个问题。下面介绍下如何添加。
首先需要在创建好的app应用的根目录创建文件夹名为management的目录,然后继续在该目录创建commands的目录,并在两个目录中都要创建__init__.py
的python文件。 目录创建好之后继续在commands的目录中添加notify_baidu.py
文件,文件名将会是manage.py
的命令名。目录结构如下:
代码内容大概如下:
# -*- coding: utf-8 -*-
import requests
from django.core.management.base import BaseCommand
from article.models import Article
from article.constants import BlogStatus, DOMAIN
class Command(BaseCommand):
def notify_baidu(self):
articles = Article.objects.filter(status=BlogStatus.PUBLISHED).order_by('-id')
urls = [DOMAIN + article.get_absolute_url() for article in articles]
api = 'http://data.zz.baidu.com/urls?site=yangsihan.com&token=xxxxxxxxxxxxx'
response = requests.post(api, data='\n'.join(urls))
print (response.content.decode())
def handle(self, *args, **options):
self.notify_baidu()
至此,基本都完成了,执行也很简单:
python manage.py notify_baidu # notify_baidu就是文件名
上一篇:Docker常用命令整理