Estoy escribiendo una aplicación de Django, donde espero usar muchos comandos de management.py. Me gusta la idea de las funciones de Python tienen parámetros con valores por defecto, donde se define el parámetro como:Argumentos de Python y mejores prácticas de palabras clave-argumentos
def function(param1=value1)
Así que estoy escribiendo mis comandos de administración de tal manera que usted introduce la siguiente manera:
python manage.py createdb user=some_user db_name=some_name
Así lo que puedo decir, comandos management.py no aceptan este tipo de lista de argumentos, por lo que he creado un ayudante para hacer lo siguiente:
def process_args(args=None):
kwargs = {}
if not args:
return kwargs
for i in args:
try:
k,v = i.split('=')
kwargs[k] = v
except ValueError, ve:
raise CommandError("Please Enter All Arguments as key=value. e.g. user=admin")
return kwargs
¿hay una mejor manera de hacer esto?
Estoy teniendo problemas para conseguir que esto funcione. La clase BaseCommand necesita tener las opciones agregadas a su option_list para que reconozca la opción. Pero de acuerdo con la publicación a continuación, el uso de make_option ha quedado en desuso. Por lo tanto, me gustaría usar argparse, pero ¿cómo agrego los argumentos a la clase BaseCommand? –
Honestamente, me gustaría ir con lo que sugirió @nrabinowitz: use la funcionalidad incorporada de Django cuando trabaje con Django. – Amber