2017-03-20 3 views
3

Wenn sich Quelldateien in meinem Projekt ändern, wird der Django Server neu geladen. Ich möchte dies auch auf Nicht-Python-Quelldateien erweitern. Ich benutze native SQL-Abfragen, die in SQL-Dateien gespeichert sind (zB. big_select.sql), und ich möchte den Server neu laden, wenn diese Dateien ändern.Django Autoreload: hinzugefügte Datei hinzufügen

Ich benutze Django unter Windows.

Ich habe versucht, .py Erweiterung hinzuzufügen, die nicht funktioniert hat.

Antwort

2

Kürzlich hatte ich das negierte Problem - benötigte Django-App, um einige Dateien von der Beobachtung für Entwicklungszwecke auszuschließen. Ich habe herausgefunden, dass django die überwachten Dateipfade in der Liste django.utils.autoreload._cached_filenames speichert. Wenn Sie Elemente hinzufügen oder entfernen, wird django gezwungen, Dateien zu starten oder zu stoppen.

Was Ihr Problem betrifft, ist dies die (eine Art Hacky) Lösung. Für den Demo-Zweck habe ich die apps.py angepasst, so dass die Datei direkt nach dem Initialisieren von django angesehen wird, aber Sie können den Code wo immer Sie möchten einfügen. Zunächst einmal die Datei erstellen, wie django nur Dateien sehen kann, die bereits vorhanden ist:

$ touch /tmp/foo.bar 

In Ihrem django App:

# apps.py 
from django.apps import AppConfig 
... 
import django.utils.autoreload 


class MyAppConfig(AppConfig): 
    name = 'myapp' 

    def ready(self): 
     ... 
     django.utils.autoreload._cached_filenames.append('/tmp/foo.bar') 

nun den Server starten, in einer anderen Konsole die beobachtete Datei ändern:

$ echo baz >> /tmp/foo.bar 

Der Server sollte jetzt ein Autoreload auslösen.

Verwandte Themen