Django 有没有类似 Ruby gems 的插件?
有没有类似于Ruby中的“gem”的东西在Django里?也就是说,Django有没有像插件那样的东西,比如用来管理用户认证的插件等等?
3 个回答
有一种叫做Python eggs的东西,跟Ruby Gems很像。我相信其中一些可以为Django增加功能。而且还有一些像Django Extensions这样的工具。
为了更详细地解释一下其他回答,Ruby中的“gem”相当于Python中的“egg”。我不太懂Ruby,所以不太确定这两者的对应关系有多准确,但“egg”基本上就是Python包的安装文件,它告诉Python哪些包已经安装了。通常,egg是通过在包的目录中运行 ./setup.py install
来创建的,或者使用setuptools,也就是 pip install NAME-OF-PACKAGE
(后者通常更简单,因为它会帮你下载文件并安装所有需要的依赖)。需要注意的是,任何包含 __init__.py
文件的文件夹或模块,只要放在PYTHONPATH中,Python都可以导入;安装它们只是为了帮助跟踪正在使用的包,并让处理那些依赖关系复杂的包变得更简单。
在Django中,正如@EinLama提到的,这些附加包就像应用程序(通常包括像models.py、views.py、urls.py等文件)。其中一些包是按照上面描述的方式被Python安装的,而有些只是应该放在你的PYTHONPATH中的文件夹(在这两种情况下,你还需要在settings.py文件中将它们添加到已安装的应用程序中,以便Django知道它们的存在)。此外,我经常遇到一些(开源)包,它们几乎能满足我的需求,但不完全符合,或者设计得很死板,必须修改的细节很难调整。对于这些情况,我通常会把应用直接放在我的项目文件夹里,这样我可以根据需要进行修改,并像使用其他应用一样访问它。这样的话,这个包就只限于那个特定的Django项目——它不会被Python安装,也不会创建egg。
希望这些解释能让事情更清楚一些。
在Django的世界里,这个东西叫做应用。
你可以在这里找到一些应用:https://www.djangopackages.com/