sna*_*ies 9 python django arguments django-admin
我有一个工作的 django-admin自定义命令,用于使用新信息填充我的数据库.一切都行得通.
但是,我现在已经稍微更改了我的模型和函数,以接受两个参数作为元组 - 名字和姓氏,而不仅仅是"名字".
以下代码 - 工作.使用"manage.py xyz name1 name2 name3 ...等运行(不同args之间的空格)
from django.core.management.base import BaseCommand, CommandError
from detail.models import ABC
from detail.parser import DEF
class Command(BaseCommand):
args = '<name...>'
help = 'Populates the ABC class database'
def handle(self, *args, **options):
for symbol in args:
try:
info = DEF(name)
Run Code Online (Sandbox Code Playgroud)
是否可以从django-admin自定义命令传递两个参数,其中第二个参数是可选的 - > ie(first,last = None)?
伪代码低于我想要运行的..."manage.py xyz(first1,last1)(first2,last2)< - 或者这个的一些变化
我已经更改了DEF函数以适当地接受它作为一个独立的函数.我只是不确定如何才能让django-admin命令正常工作.
mod*_*che 13
这完全有可能,虽然django.core.management没有提供这样做的具体工具.您可以解析通过args关键字参数传递的参数.你必须提出这样做的语法(在help命令的属性中定义语法可能是个好主意).
假设语法是firstname.lastname,或者仅firstname在省略姓氏的情况下,您可以执行以下操作:
def handle(self, *args, **options):
for arg in args:
try:
first_name, last_name = arg.split('.')
except ValueError:
first_name, last_name = arg, None
info = DEF(first_name, last_name)
Run Code Online (Sandbox Code Playgroud)
命令的用户可以传递参数,如下所示:
$ python manage.py yourcommand -v=3 john.doe bill patrick.bateman
Run Code Online (Sandbox Code Playgroud)