前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django自定义命令

Django自定义命令

作者头像
渔父歌
发布2019-10-17 23:10:53
7220
发布2019-10-17 23:10:53
举报
文章被收录于专栏:数据结构笔记

在任意一个已安装的应用下,创建如下包目录

代码语言:javascript
复制
app
├─management
│  ├─commands
│  │  ├─__pycache__
│  │  ├─ __init__.py
│  │  └─yourcommad.py
│  ├─__pycache__
│  └─ __init__.py
...

在commads目录下面创建我们的命令文件,命令的名称就是命令文件的名称,命令文件内部的基本结构如下:

代码语言:javascript
复制
#-*- coding: utf-8 -*
__author__ = 'geebos'
from django.core.management.base import BaseCommand, CommandError
from app.models import UserInfo
import os
import csv


class Command(BaseCommand):
    help = '导入数据,以逗号分隔的csv文件,编码为UTF-8\npython manage.py import_data 数据文件路径'

    def add_arguments(self, parser):
         parser.add_argument('path', type=str)

    def handle(self, *args, **options):
        path = options['path']
        if not os.path.isfile(path):
            raise CommandError('文件不存在')

        print('正在导入...')
        with open(path, 'r', newline='', encoding='utf-8_sig') as f:
            reader = csv.DictReader(f)

            for t in reader:
                UserInfo.objects.create(**dict(t))
        print('导入完成')

首先定义一个Commad类(注意这个类名不能改变,并且一个文件内只能有一个Commad类),这个类继承自 django.core.management.base.BaseCommand.

help为命令的帮助文档,当输入错误命令时输出 help的内容

add_arguments函数用来添加参数,如果没有参数可以不定义这个函数。在这个函数里通过调用 parse.add_argument来添加参数.

handle是命令的处理函数,可以通过 options来取得从命令行输入的参数。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.10.16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档