J'essaie d'obtenir la meilleure configuration possible pour développer mon projet django depuis le début et j'ai du mal à tout faire pour bien jouer dans la structure du répertoire. J'ai mis en place virtualenv (env dans cet exemple) afin que je puisse déployer un environnement python vide propre pour chaque projet django.structure du répertoire du projet django et le chemin python
La structure de base est la suivante:
/env/
/bin
/db <--- Django DB
/downloads
/lib
/static <--- Where css/imgs/js etc is served from
/project/ <--- Django root
/__init__.py
/settings.py
/manage.py
/appsfolder/
/appname/
/__init__.py
/models/
/__init__.py
/somemodel.py
/urls/
/__init__.py
/someurl.py
/views/
/__init__.py
/someview.py
C'est la mise en page de base; Je veux que chaque projet ait un répertoire pour les applications, et dans chaque application, un dossier séparé pour les modèles, les vues et les URL.
Le problème que j'ai est avec le chemin de python et comment les modules sont manipulés.
Dans une application, je ne veux pas avoir à se référer au projet lorsque l'importation de modèles à savoir que je devrais utiliser:
import appname.models.modelname
pas:
import projectname.models.modelname
pour aider reusablility
Dans le répertoire des modèles, j'ai les éléments suivants init .py
from model1 import ModelName1
from model2 import ModelName2
from model3 import ModelName3
__all__ = ['ModelName1', 'ModelName2', 'ModelName3']
Mais quand je tente d'utiliser un fichier URL séparée (en /appname/urls/urlfile.py) et importer les modèles suivants:
from appname.models.somemodel import ModelName
je reçois un « module introuvable » Erreur.
tout:
from appsfolder.appname.models.somemodel import ModelName
fonctionne ok
Je présume que cela est parce que l'application ne soit pas directement sur le chemin de python, il est plutôt dans un sous-dossier appelé appsfolder, mais je ne suis pas sûr pour y remédier, tout en gardant tout ce qui est réutilisable et relatif.
Je sais qu'une solution consiste à mettre toutes les applications directement sur le chemin python sous les paquets de site, mais je n'aime pas vraiment cette idée, car je pense que les applications devraient être dans le projet si vous utilisez virtualenv's
C'est bien pratique pour séparer de mon propre 'appviews' dossier dans la racine du projet. Ils en ont un pour les «templates», pourquoi pas aussi? – Droogans