web-dev-qa-db-fra.com

Django manage.py --no-input. Oui ou non?

Je ne trouve pas cela dans les documents. Quand je lance python manage.py collecstatic --no-input cela signifie-t-il qu'il répondra "oui" à toute invite qui apparaîtra dans le processus? Pareil pour python manage.py migrate --no-input.

19

Pour collectstatic:

    message.append(
        'Are you sure you want to do this?\n\n'
        "Type 'yes' to continue, or 'no' to cancel: "
    )

    if self.interactive and input(''.join(message)) != 'yes':
        raise CommandError("Collecting static files cancelled.")

Donc, pour collecter de l'électricité statique, si vous définissez --no-input il définira interactive sur False et, comme vous pouvez le voir ci-dessus, répondra yes à la question pour vous.

Pour la migration, c'est beaucoup plus délicat à cause de la signalisation Django. La gestion migrate elle-même ne pose aucune question, mais d'autres applications installées peuvent se connecter à la pre_migrate_signal ou post_migrate_signal et gérer l'interactivité à leur manière. Le plus courant que je connaisse est contenttypes

Pour contenttypes, --no-input répond "non" comme dans "Non, veuillez ne supprimer aucun type de contenu périmé":

        if interactive:
            content_type_display = '\n'.join(
                '    %s | %s' % (ct.app_label, ct.model)
                for ct in to_remove
            )
            ok_to_delete = input("""The following content types are stale and need to be deleted:

%s

Any objects related to these content types by a foreign key will also
be deleted. Are you sure you want to delete these content types?
If you're unsure, answer 'no'.

    Type 'yes' to continue, or 'no' to cancel: """ % content_type_display)
        else:
            ok_to_delete = False
31
2ps