2010-01-24 21 views
2

J'ai créé un fichier d'extension markdown (appelé mdx_xxx.py) pour un projet django sur lequel je travaille mais je ne peux pas vraiment décider où le mettre.L'emplacement correct pour mettre un fichier d'extension markdown dans un projet django?

La documentation indique que le fichier doit résider sur le PYTHONPATH et j'ai vu plusieurs articles de blog invitant à mettre simplement le fichier dans le répertoire racine du projet. Cependant, cela me semble un endroit étrange car je préfère le voir dans le répertoire de l'application, mais ce n'est plus le cas sur le PYTHONPATH.

Est-ce qu'un programmeur django expérimenté pourrait nous éclairer sur ce problème?

Merci

Répondre

1

Exiger des fichiers d'extension pour vivre directement sur le chemin Python, et non à l'intérieur d'un paquet, est (IMO) une limitation malheureuse de l'implémentation de démarque Python.

Si votre extension est très spécifique à votre projet, je pense que la placer dans la racine du projet est la meilleure option disponible. D'un autre côté, si votre extension est réutilisable dans d'autres cas, je l'empaqueterais avec un simple setup.py et l'installerais dans un virtualenv en utilisant pip, comme je le fais avec toutes mes autres dépendances.

1

Tout ne devrait pas être dans votre projet. C'est une exigence, une dépendance. Vous pouvez toujours les emballer ensemble, et vous devrez mettre cela au plus haut niveau, je pense. Cela signifie essentiellement importable à partir du même endroit que le projet lui-même. Personnellement, je pousse tout vers un virtualenv, donc c'est beau et propre. Si vous faites de même, votre processus de déploiement doit inclure la mise en sécurité de votre projet et de toute dépendance dans ce virtualenv. Sinon, à n'importe quel endroit que vous avez dans le chemin.

0

Si vous utilisez la bibliothèque de démarquage standard de pip (démarque d'installation pip) maintenant à la version 2.3.1, l'extension peut être n'importe où. Vous avez juste à fournir un chemin pointé vers lui. L'ancien style - l'avoir directement sur le PYTHONPATH dans le module préfixé mdx_ fonctionne toujours aussi bien.

Je l'ai dans mon code d'application: django_file_downloads.mdx_download.

Pour l'utiliser à partir de modèles de django:

{% load markup %} 
{{ variable|markdown:'django_file_downloads.mdx_download' }}