8
votes

Utiliser des modèles et des formes à l'extérieur de Django?

est-il possible d'exécuter un fichier d'affichage à l'aide du modèle DJANGO et formez-vous en dehors de l'environnement Django?


3 commentaires

Vous souhaitez utiliser des vues, l'ORM et le cadre de formulaires - pourquoi ne pas simplement utiliser tous les Django?


@Dominic parce que je ne veux pas devoir retourner httpresponses


Vous devez importer votre réponse à l'environnement (tordue?) Dans Django et retourner cela ici.


3 Réponses :


11
votes

c'est possible. Django est assez bon pour être droit python sans beaucoup de magie, vous pouvez donc généralement découpler des choses. Les vues ne sont que des fonctions et peuvent être appelées à partir de tout autre code Python.

Pour utiliser l'ORM, vous devrez configurer l'environnement Django dans votre script. En regardant un fichier "manage.py" montre comment faire ceci: p> xxx pré>

MAINTENANT, vous pouvez appeler quelle que soit la vue souhaitée: p> xxx Pré>

Gardez à l'esprit que la convention est destinée aux fonctions d'affichage de prendre un objet HTTPRequest comme premier paramètre et de renvoyer un objet HTTPResponse. Vous pouvez construire vous-même un objet de demande: P>

from django.http import HttpRequest

result = some_view(HttpRequest(), ...)


2 commentaires

C'est tellement utile. Merci. Cela devrait vraiment être inclus dans le livre de Django ou quelque chose de similaire. J'ai essayé de déterminer comment tirer parti des modèles API pour charger facilement des données dans la DB, et c'est exactement ce dont j'avais besoin. Merci encore.


Bonjour, j'ai l'erreur: de django.core.management importer setup_environ importerror: impossible d'importer le nom SETUP_ENVIRON



1
votes

dans Django 1.6, cela peut être simplement fait en mettant le répertoire de projet dans le chemin, puis définissez la variable d'environnement DJANGO_SETTS_MODULE, comme indiqué ci-dessous:

import sys
import os

sys.path.append(path_to_the_project_dir)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'projectname.settings')


0 commentaires

0
votes

Dans Django 1.7, vous devez également faire:

import sys
import os

sys.path.append(path_to_the_project_dir)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'projectname.settings')

import django
django.setup()


0 commentaires