Exécuter du code à exécution unique au démarrage de Django
Lors du développement d'applications Django, il peut y avoir des cas où vous devez exécuter du code spécifique une seule fois au démarrage, généralement à des fins d'initialisation. Cependant, l'utilisation d'une classe Middleware pour cet objectif peut entraîner plusieurs exécutions, car le système middleware Django appelle la méthode __init__() de chaque middleware à chaque requête.
La solution de Django pour Django < 1.7
Pour résoudre ce problème dans les versions de Django antérieures à 1.7, une approche efficace consiste à placer votre code de démarrage dans le fichier __init__.py de l'une de vos INSTALLED_APPS. Par exemple, dans l'application myapp, vous pouvez inclure le code suivant dans myapp/__init__.py :
<code class="python">def startup(): pass # Place your startup code here startup()</code>
Cette approche garantit que la fonction startup() est exécutée lors du démarrage de Django et n'est pas invoquée à nouveau lors du démarrage de Django. requêtes ultérieures, fournissant l'exécution unique souhaitée.
Solution améliorée pour Django 1.7 et versions ultérieures
Django version 1.7 a introduit une solution plus élégante pour cette exigence. En implémentant une classe AppConfig avec une méthode ready() dans le fichier apps.py de votre application, vous pouvez spécifier le code à exécuter lorsque l'application est marquée comme prête. Voici un exemple utilisant l'application myapp :
<code class="python"># myapp/apps.py from django.apps import AppConfig class MyAppConfig(AppConfig): name = 'myapp' verbose_name = "My Application" def ready(self): pass # Place your startup code here</code>
Cette approche vous permet de définir et d'exécuter votre code de démarrage plus naturellement et est la solution recommandée pour Django 1.7 et versions ultérieures.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!