¿Cómo crear un comando en django?
Si nunca has usado django visitami lista de reseñas de libros, donde opino sobre varios libros de django.
Crear un comando en django
Para crear un comando de django basta con crear una carpeta llamada management en el mismo nivel que tu archivo manage.py
mkdir management
Postiormente, hay que crear una carpeta llamada는 dentro de esa carpeta를 명령합니다.
cd management/
mkdir commands
Ahora nos posicionamos dentro de esa carpeta y creamos un archivo con el nombre de nuestro comando
cd commands/
touch tucomando.py
BaseCommand의 명령에 따라 클래스를 생성할 수 있는 보관소를 만들고, BaseCommand 핸들을 사용하십시오.
# management/command/tucomando.py
from django.core.management.base import BaseCommand, CommandError
class Command(BaseCommand):
help = 'help text'
def handle(self, *args, **options):
pass
Dentro del método handle colocaremos el código que se ejecutará cuando usemos nuestro comando.
from django.core.management.base import BaseCommand, CommandError
class Command(BaseCommand):
help = 'help text'
def handle(self, *args, **options):
self.stdout.write(self.style.ERROR("Texto de error"))
self.stdout.write(self.style.WARNING("Texto de advertencia"))
Para mostrar texto en la terminal usaremos self.stdout.write para imprimir texto en la salida estándar. Podemos seleccionar entre varios estilos de acuerdo a lo que queramos mostrar.
Añadir argumentos al comando
Django usa la famosa librería argparse de Python para manejar los argumentos en sus comandos
Argumentos 위치
Podemos añadir argumentos posicionales al comando usando el método add_argument de parser.
from django.core.management.base import BaseCommand, CommandError
class Command(BaseCommand):
help = 'help text'
def add_arguments(self, parser):
parser.add_argument('email', nargs='+', type=str)
Especificamos el nombre del argumento posicional como primer argumento, luego la cantidad de argumentos que recibirá. El símbolo '+' establece que esos argumentos serán colocados en una lista, mientras que type es el tipo de valores que recibirá el argumento.
*args y **options como argumento 수신을 처리할 수 있는 함수를 지정하지 마십시오. Bien, pues podemos acceder a los valores a través del diccionario 옵션.
from django.core.management.base import BaseCommand, CommandError
class Command(BaseCommand):
help = 'help text'
def add_arguments(self, parser):
parser.add_argument('email', nargs='+', type=str)
def handle(self, *args, **options):
# options['email'] es una lista
send_emails(options['email'])
옵션 인수
¿Y si yo quiero argumentos opcionales? 가능하면 가능합니다.
La clase Command, a través de su parser, también nos permite usar argumentos opcionales.
from django.core.management.base import BaseCommand, CommandError
class Command(BaseCommand):
help = 'help text'
def add_arguments(self, parser):
# Named (optional) arguments
parser.add_argument(
'--file',
nargs='?',
const='logo.svg',
type=str,
help='texto de ayuda',
)
def handle(self, *args, **options):
if options['file'].endswith('.svg'):
process_svg()
추가 인수에 추가 인수를 추가할 수 있는 중요한 인수가 필요합니다.
당신은 당신을 사랑합니다:
Prefijo '--': 주사위를 Argparse que es un argumento opcional
nargs: indica la cantidad de valores que puede recibir nuestro argumento, el simbolo '+' en este caso es para uno o ninguno.
const: es el valor a usar si no especificamos ningún valor para el argumento.
유형: nos dice el tipo de dato que espera nuestro argumento.
도움말: es el texto de ayuda a mostrar.
탈출 엘 코만도
¿Y para ejecutarlo? 시설; justo como lo harías con cualquier otro comando de django.
python manage.py tucomando
# con un argumento posicional
python managa.py tucomando email [email protected]
# o con un argumento opcional
python manage.py tuotrocomando --file=tuarchivo.svg
Listo, si te leiste esto completo, ahora conoces lo básico de la creación de comandos de django. Pero no te quedes solo con esto, visita la documentación oficial para profundizar más.
Reference
이 문제에 관하여(¿Cómo crear un comando en django?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/prox_sea/como-crear-un-comando-en-django-2f02텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)