Czy można uruchomić plik widoku przy użyciu modelu i formularza Django poza środowiskiem Django?Korzystanie z modeli i formularzy poza Django?
Odpowiedz
Jest to możliwe. Django jest dość dobry w byciu prostym pythonem bez dużej magii, więc zazwyczaj możesz oddzielić rzeczy. Widoki są po prostu funkcjami i można je wywoływać z dowolnego innego kodu Pythona.
Aby użyć ORM, musisz skonfigurować środowisko django w swoim skrypcie. Patrząc na „manage.py” pliku pokazuje jak to zrobić:
from django.core.management import setup_environ
import settings
setup_environ(settings)
Teraz można nazwać cokolwiek widok chcesz:
from myapp.views import some_view
some_view(...)
Należy pamiętać, że konwencja jest do wglądu do funkcji podejmij obiekt HttpRequest jako swój pierwszy parametr i zwróć obiekt HttpResponse. Można zbudować obiekt żądania siebie:
from django.http import HttpRequest
result = some_view(HttpRequest(), ...)
Ale jeśli naprawdę nie są zainteresowane wykorzystaniem httpResponse lub HttpRequest obiektów, być może po prostu nie powinno nazywać swoje metody „Widoki”. Może to "utils" lub coś innego. Żadne z nich nie jest wymuszane przez Django, ale dobrze jest postępować zgodnie z konwencją, aby inni programiści mogli przeczytać twój kod.
Edytuj: 2010-05-24: Naprawiono "setup_environ" (błędnie miał wcześniej "execute_manager"). Reference.
Jest to przydatne. Dziękuję Ci. To naprawdę powinno być zawarte w książce Django lub coś podobnego. Próbowałem dowiedzieć się, jak skorzystać z API modeli, aby załadować niektóre dane do DB łatwo, i to jest dokładnie to, czego potrzebowałem. Dzięki jeszcze raz. – CMaury
Witam, mam błąd: 'from django.core.management import setup_environ ImportError: nie można zaimportować nazwy setup_environ' – jeff
W Django 1.6, można to zrobić po prostu umieszczając katalog projektu w ścieżce, a następnie ustawić zmienną środowiskową DJANGO_SETTINGS_MODULE jak pokazano poniżej:
import sys
import os
sys.path.append(path_to_the_project_dir)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'projectname.settings')
Następnie można rozpocząć importowanie modeli.
W Django 1.7, trzeba także zrobić:
import sys
import os
sys.path.append(path_to_the_project_dir)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'projectname.settings')
import django
django.setup()
przeciwnym razie będzie hit wyjątek AppRegistryNotReady
.
- 1. Django: wiele modeli w jednym szablonie przy użyciu formularzy
- 2. Django kreator formularzy i recaptcha
- 3. Jak zapisać kolejność wbudowanego zestawu formularzy django?
- 4. Kompleksowe aktualizowanie modeli w scenariuszach wysyłania formularzy i MVC
- 5. Django: reprezentacja ciągów modeli
- 6. Zamawianie definicji modeli Django
- 7. Django - Obsługa "modeli enum"
- 8. Sfinks - dokumentacja modeli Django
- 9. Korzystanie getAssets poza działalnością
- 10. Zapisywanie zagnieżdżonych formularzy w Django
- 11. Korzystanie z Jython z Django?
- 12. Django: Wiele wierszy z dwóch modeli od
- 13. Korzystanie z aplikacji harmonogramu Django z własnymi modelami
- 14. Korzystanie z repozytorium poza kontrolerem w Symfony2
- 15. Bezpieczne korzystanie z Component.repaint() poza EDT?
- 16. Korzystanie z funkcji czekającej poza funkcją asynchroniczną
- 17. Kreator formularzy Django do edycji modelu
- 18. Korzystanie z dynamicznego pola wyboru w Django
- 19. Django Administrator: Pokaż listę modeli
- 20. Formularz modelu django. Uwzględnij pola z pokrewnych modeli
- 21. Django humanizować poza szablonem?
- 22. Korzystanie z uwierzytelniania za pomocą formularzy z interfejsem WWW
- 23. Jak ChoiceField readonly formularzy django
- 24. Korzystanie z pomocników formularzy Railsów z serią niestandardowych klas
- 25. Korzystanie z pojedynczego widoku dla pochodnych modeli mvc
- 26. wiele baz danych i wiele modeli w django
- 27. Django Timezone Wsparcie poza szablonami
- 28. Lista rozwijana Django formularza przechowywanych modeli
- 29. Czy jest dobry WikiField dla modeli django?
- 30. Django: ze znaczników poza blokami
Chcesz użyć widoków, ORM i frameworka formularzy - dlaczego nie po prostu użyć wszystkich Django? –
@ Dominic, ponieważ nie chcę zwracać HttpResponses – RadiantHex
Co chcesz zwrócić? – Puddingfox