django 开源
Jacob Kaplan-Moss和Frank Wiles也为本文做出了贡献。
Django围绕可重用应用程序的概念构建:提供可重用功能的自包含软件包。 您可以通过组合这些可重复使用的应用程序以及您自己的特定于站点的代码来构建站点。 有一个丰富多样的可重用应用程序生态系统供您使用-PyPI列出了8,000多个Django应用程序 -但是您怎么知道哪个是最好的呢?
为了帮助您集中精力进行应用搜索,我们汇总了这五个收藏夹的列表。 他们是:
- Cookiecutter :启动新Django站点的最佳方法。
- Whitenoise :最好的静态资产服务器。
- Django Rest Framework :使用Django编写REST API的最佳方法。
- Wagtail :最好的基于Django的内容管理系统。
- django-allauth :提供“社交登录”的最佳方法(例如,Twitter,Facebook,GitHub等)。
我们还建议您签出Django Packages ,这是可重复使用的Django应用程序的目录。 Django软件包将Django应用组织为“网格”,使您可以比较相似的软件包并在它们之间进行选择。 您可以查看每个软件包提供哪些功能以及使用情况统计信息。 (例如:这是REST工具的网格 ,它可以帮助您理解为什么我们建议使用Django REST Framework。)
为什么您应该信任我们?
我们使用Django的时间比几乎任何人都长。 在Django发布之前,我们中的两个人(Frank和Jacob)在Lawrence Journal-World (Django的出生地)工作(实际上帮助实现了开源发布)。 在过去的八年中,我们所有人都在运营一家咨询公司,为公司提供有关如何最佳使用Django的建议。
因此,我们已经看到了Django项目和社区的整个历史,并且看到了流行的软件包问世。 在我们三个人中,我们可能已经亲自尝试了这8,000个应用程序中的至少一半,或者我们知道有人尝试过。 我们对使应用程序可靠可靠的要素有深刻的理解,对使这些事物保持强大作用的要素也有很好的理解。
启动新Django网站的最佳方法: Cookiecutter
开始一个新项目或应用程序总是很痛苦。 您可以使用Django内置的`startproject`,但如果您像我们一样,那么您在做事上会很特别。 Cookiecutter通过为您提供一种快速简便的方法来定义可以轻松重用的项目或应用模板来解决此问题。 一个简单的例子,只是`pip install cookiecutter` ,然后从命令行运行它:
$ cookiecutter https://github. com /marcofucci/cookiecutter-simple-django
您将立即开始提示您快速输入答案,例如项目名称,回购,作者姓名,电子邮件以及其他一些配置。 这些用于帮助填写项目详细信息。 我们选择了曾经如此原始的“ foo”作为我们的回购名称。 因此cookiecutter在子目录'foo'中创建了一个简单的Django项目。
如果您在'foo'项目中稍作修改,您会看到提示您进行配置的其他配置已根据需要与子目录一起模板化到文件本身中。 这个“模板”全部定义在GitHub repo URL上,当我们调用`cookiecutter`时,它用作唯一的参数。 本示例使用远程GitHub存储库作为模板; 但是,请注意,您也可以使用本地文件系统目录,这对于不可重用的情况非常理想。
我们提到cookiecutter是一个很棒的Django程序包,但是老实说,它对于纯Python甚至与Python不相关的目的很有用。 能够以易于重复的方式完全按照您的意愿进行布局,使得cookiecutter成为保持工作流程干燥的绝佳工具。
最佳静态资产服务器: Whitenoise
多年来,为网站的静态资产(图像,JavaScript,CSS)提供服务一直很痛苦。 正如文档所述,内置的django.views.static.serve视图“未经强化可用于生产用途,应仅用作开发辅助工具”。 但是从“真实的” Web服务器(例如NGINX或CDN之外)提供媒体可能很难设置。
Whitenoise彻底解决了这个问题。 它与仅用于开发的静态服务器一样易于设置,并且已针对生产进行了强化和优化。 设置很简单:
- 确保您使用的是Django的contrib.staticfiles应用,并且已在设置文件中正确设置了“ STATIC_ROOT” 。
- 在您的`wsgi.py`文件中启用Whitenoise:
from django.
core .
wsgi
import get_wsgi_application
from whitenoise.
django
import DjangoWhiteNoise
application
= get_wsgi_application
(
)
application
= DjangoWhiteNoise
( application
)
这就是全部! 对于大型应用程序,您可能需要使用专用的媒体服务器和/或CDN,但对于大多数中小型Django站点,Whitenoise的功能已绰绰有余。
有关Whitenoise的更多信息, 请查阅文档 。
REST API的最佳工具: Django REST Framework
REST APISwift成为现代Web应用程序的标准功能。 一个API实际上只是用JSON而不是HTML进行通信,当然,您可以仅使用Django来实现。 您可以制作自己的视图,以设置适当的内容类型并以JSON而不是模板化HTML响应返回数据。 这正是许多人在发布Django Rest Framework (又名DRF)之类的API框架之前所做的事情。
如果您熟悉的话,使用DRF构建REST API类似于使用Django的基于类的视图,但这些视图是针对API用例专门设计和针对的。 您的平均API设置中涉及到很多代码,因此,除了让您兴奋的代码示例外,我们还将重点介绍一些DRF功能,这些功能使您的生活更轻松:
- 自动浏览的API,使开发和手动测试变得轻而易举。 单击DRF 演示示例中的 。 您可以查看API响应并支持POST / PUT / DELETE类型的操作,而无需自己做任何事情。
- 轻松集成身份验证样式,例如OAuth,基本身份验证或API令牌。
- 简单的权限系统,用于对哪些用户可以使用哪些API端点和/或操作进行细粒度控制。
- 内置速率限制。
- 与django-rest-swagger结合使用时,几乎是自动的API文档。
- 第三方库的广泛生态系统。
尽管您当然可以在不使用DRF的情况下构建API,但我们无法弄清您从那条路开始的原因。 即使您不使用DRF的所有功能,从安全性,API的一致性和开发速度方面来说,从其坚实的基础视图类构建自己的API视图也是一个巨大的胜利。 如果您尚未使用DRF,则应留出一些时间进行检查。
最佳基于Django的CMS: Wagtail
Wagtail是Django CMS世界的当前宠儿,并且有充分的理由。 与大多数CMS系统一样,它使您可以通过简单的Django模型灵活地定义不同类型的页面及其内容。 这将使您从零到几小时(而不是几天)到基本工作的系统。 举个简单的例子,为公司人员定义“职员”页面类型很简单:
from wagtail.
wagtailcore .
models
import Page
from wagtail.
wagtailcore .
fields
import RichTextField
from wagtail.
wagtailadmin .
edit_handlers
import FieldPanel
, MultiFieldPanel
from wagtail.
wagtailimages .
edit_handlers
import ImageChooserPanel
class StaffPage
( Page
) :
name
= models.
CharField
( max_length
=
100
)
hire_date
= models.
DateField
(
)
bio
= models.
RichTextField
(
)
email
= models.
EmailField
(
)
headshot
= models.
ForeignKey
(
'wagtailimages.Image'
, null
=
True
, blank
=
True
)
content_panels
= Page.
content_panels +
[
FieldPanel
(
'name'
)
,
FieldPanel
(
'hire_date'
)
,
FieldPanel
(
'email'
)
,
FieldPanel
(
'bio'
, classname
=
"full"
)
,
ImageChoosePanel
(
'headshot'
)
,
]
但是,Wagtail真正的吸引力在于其易于使用的现代管理界面和灵活性。 您可以控制网站的不同区域中允许的页面类型,向页面添加其他复杂的逻辑,并立即获得标准的审核/批准工作流程。 在大多数CMS系统中,有时您会碰壁。 有了Wagtail,我们仍无法找到一堵墙,我们无法轻易地找到一扇通透的门,以使其以一种易于维护的方式准确地实现我们想要的功能。 如果您有兴趣,我们将对Wagtail进行更深入的探讨 。
最佳社交登录工具: django-allauth
django-allauth是可重用的Django应用程序,可以解决您的注册和身份验证需求。 无论您需要本地还是社会注册系统,django-allauth都可以满足您的要求。
该项目支持多种身份验证方案,例如用户名或电子邮件地址。 用户注册后,将支持多种策略来进行帐户验证,从无验证到电子邮件验证。 还支持多个社交和电子邮件帐户。 还支持可插入的注册表格,该表格允许在注册过程中提出其他问题。
django-allauth支持20多个身份验证提供程序,包括Facebook,GitHub,Google和Twitter。 如果您在社交网站上拥有一个不受支持的帐户,那么最受第三方插件支持的帐户。 该项目支持编写自定义后端,这也使自定义身份验证系统也可以工作。 这对具有自定义身份验证需求的任何人都很好。
django-allauth易于设置,并且具有大量文档 。 该项目也经过了良好的测试,因此您知道一切都可以正常工作。
您是否有喜欢的Django软件包? 在评论中让我们知道。
翻译自: https://opensource.com/business/15/12/5-favorite-open-source-django-packages
django 开源