2010-08-20 3 views
0

J'aime Eclipse pour un certain nombre de raisons. L'un d'eux est, quand je fais un projet java, je peux copier et coller mon projet ou le renommer, en faire un nouveau, et il mettra à jour tous les noms de tout. J'essaie de faire quelque chose de similaire pour un projet DJango.Django et Eclipse, un projet portable

je peux définir une variable APPNAME avec le code suivant

APPNAME = os.path.basename(os.path.dirname(__file__)) 

et je pourrais importer cela dans un fichier qui a besoin de connaître le nom de l'application. Ce n'est pas une solution idéale mais cela fonctionnerait pour mon fichier settings.py ainsi que pour mes fichiers urls.py.

Il ne fonctionnera pas pour les situations où je dois importer quelque chose de quelque part comme ceci:

from myproject.someapp import forms 

est-il un moyen pour django/python pour savoir ce que « myproject » est? Ou puis-je utiliser une instruction d'importation relative à l'application en cours? Ou peut-être existe-t-il un meilleur moyen de copier des projets django.

EDIT: J'imagine qu'il y a aussi des dépendances de base de données que je devrais traiter.

Répondre

1

Je suis un couple de règles pour garder mes applications portables. Je vais les énumérer ci-dessous dans l'espoir que quelqu'un les trouve utiles.

  1. Inclure mes applications dans le PYTHONPATH plutôt que mes projets. De cette façon, je peux exécuter from app import forms plutôt que from project.app ....
  2. Suite à # 1, I toujours importer à partir de l'application uniquement. Cela signifie que je peux réutiliser mes applications dans d'autres projets sans avoir à modifier les instructions d'importation dans l'application ou dans d'autres applications dépendantes.

Si vous restez sur # 1 et # 2, vous pouvez généralement copier et coller des projets sans trop de problèmes. Cependant, vous devrez toujours modifier settings.py. Où faites-vous le changement au PYTHONPATH?

+0

Merci! – JPC

+0

J'ai lu un article ici: http://codespatter.com/2009/04/10/how-to-add-locations-to-python-path-for-reusable-django-apps/ mais il dit que je dois faire un dossier "app" pour mes applications. J'aimerais ne pas le faire, si possible. – JPC

+0

Eh bien, je l'ai fait dans mon settings.py: PROJECT_ROOT = os.path.dirname (__ FILE__) sys.path.insert (0, os.path.join (PROJECT_ROOT, "apps")) et mettre tous mes applications dans un dossier appelé apps donc ma structure de projet est djangoproject1 -> apps -> appname mais aucune de mes importations ne peut être résolue quand je le fais depuis appname import * – JPC