Django 框架 - 热门扩展,简短列表
你好,程序员们,
本文列出了一些流行的Django模块和应用程序,它们可能有助于 Python 程序员通过重用开源爱好者提供的一些有价值的工作来更快地编写新功能。
谢谢!内容由AppSeed - App Generator提供。
该列表是根据我的个人经验以及相关社区的开发人员发布的建议而建立的:Dev.to Pythoners / Django、Reddit Django和Python频道以及经典的Python 论坛。
什么是Django(Web 框架)
初学者简述 - Django 是一个用 Python 编写的开源 Web 应用框架。框架是指一系列简化开发的模块和辅助程序的集合。它们按逻辑分组,允许您通过复用内容来创建 Web 应用程序,而无需从头开始编写所有内容。
有用的 Django 资源:
入围名单
- Django 扩展- 自定义扩展的集合
- Django REST 框架——用于构建 Web API 的灵活工具包
- Drf-Yasg - Django REST 框架的 Swagger 文档生成器
- Django Debug Toolbar - 显示当前请求的各种调试信息
- Django CORS Headers - 向响应添加跨域资源共享(CORS)标头
- Django reCaptcha v3 - Google reCaptcha v3在 Django 中的集成
- Django-environ - 允许轻松使用环境变量配置 Django 应用程序
- Redis 缓存- 适用于 Django 的全功能 Redis 缓存后端。
- Django Storages - Django 自定义存储后端的集合:Amazon S3、Azure、Digital Ocean、Dropbox。
- Django Allauth - 集成的 Django 应用程序集,用于解决身份验证、注册、帐户管理以及第三方(社交)帐户身份验证。
如果你想通过更新一些开源项目来快速测试这里介绍的任何扩展,这里有一个包含Django 免费应用程序的候选名单
- Django Atlantis Dark - 源代码,MIT 许可证
- Django Light Blue - 源代码,MIT 许可证
- Django Dashboard Black - 源代码,MIT 许可证
- Django Dashboard Shards - 源代码,MIT 许可证
- Django Dashboard Material - 源代码,MIT 许可证
Django扩展
这是用于 Django 项目的开源自定义扩展集合,根据 MIT 许可发布。
如何使用
$ pip install django-extensions
在 Django 配置( settings.py )中启用扩展:
INSTALLED_APPS = (
...
'django_extensions',
...
)
现在我们可以通过manage.py master脚本使用魔法:
$ # Generate (and view) a graphviz graph of app models:
$ python manage.py graph_models -a -o myapp_models.png
$
$ # Check templates for rendering errors:
$ python manage.py validate_templates
$
$ # Run the enhanced django shell:
$ python manage.py shell_plus
Django REST框架
Django REST 框架是一个强大而灵活的工具包,用于构建 Web API,具有令人印象深刻的功能集:
- Web 可浏览 API 为您的开发人员带来了巨大的可用性优势。
- 身份验证策略包括 OAuth1a 和 OAuth2 的包。
- 支持 ORM 和非 ORM 数据源的序列化。
Django REST 链接:
Django 调试工具栏
Django 调试工具栏是一组可配置的面板,显示有关当前请求/响应的各种调试信息,单击时显示有关面板内容的更多详细信息。
Django CORS 标头
一个 Django 应用,它向响应添加了跨域资源共享 (CORS) 标头。这允许从其他来源向你的 Django 应用发出浏览器内请求。
如何使用
$ pip install django-cors-headers
在 Django 配置中添加扩展:
INSTALLED_APPS = [
...
'corsheaders',
...
]
您还需要添加一个中间件类来监听响应:
MIDDLEWARE = [ # Or MIDDLEWARE_CLASSES on Django < 1.10
...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
]
Django reCaptcha v3
此集成应用程序为Google reCaptcha v3实现了 ReCaptcha 字段。
如何使用
$ pip install django-recaptcha3
然后将 django-recaptcha3 添加到您已安装的应用程序中:
INSTALLED_APPS = (
...
'snowpenguin.django.recaptcha3',
...
)
settings.py
使用 reCaptcha 私钥和公钥进行更新:
RECAPTCHA_PRIVATE_KEY = 'Super_s3Cret_1234'
RECAPTCHA_PUBLIC_KEY = 'Public key'
表单中的用法
from snowpenguin.django.recaptcha3.fields import ReCaptchaField
class ExampleForm(forms.Form):
[...]
captcha = ReCaptchaField()
[...]
Drf-Yasg
Django REST 框架的 Swagger/OpenAPI 文档生成器。
如何使用
$ pip install -U drf-yasg
更新settings.py
以启用该应用程序:
INSTALLED_APPS = [
...
'drf_yasg',
...
]
更新urls.py
:
...
from rest_framework import permissions
from drf_yasg.views import get_schema_view
from drf_yasg import openapi
...
schema_view = get_schema_view(
openapi.Info(
title="Snippets API",
default_version='v1',
description="Test description",
terms_of_service="https://www.google.com/policies/terms/",
contact=openapi.Contact(email="contact@snippets.local"),
license=openapi.License(name="BSD License"),
),
public=True,
permission_classes=(permissions.AllowAny,),
)
urlpatterns = [
url(r'^swagger(?P<format>\.json|\.yaml)$', schema_view.without_ui(cache_timeout=0), name='schema-json'),
url(r'^swagger/$', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
url(r'^redoc/$', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),
...
]
这些简单的设置将公开 4 个端点:
- /swagger.json 上的 API 规范的 JSON 视图
- /swagger.yaml 上 API 规范的 YAML 视图
- /swagger/ 上 API 规范的 swagger-ui 视图
- /redoc/ 上 API 规范的 ReDoc 视图
Django 环境
Django-environ 允许您使用十二要素方法通过环境变量配置您的 Django 应用程序。
如何使用
$ pip install django-environ
.env
在 Django 项目的根目录中创建一个文件(如下例所示):
DEBUG=on
SECRET_KEY=your-secret-key
DATABASE_URL=psql://urser:un-githubbedpassword@127.0.0.1:8458/database
SQLITE_URL=sqlite:///my-local-sqlite.db
Django 应用程序中的使用(无需将其添加到 INSTALLED_APPS)
import environ
env = environ.Env(
# set casting, default value
DEBUG=(bool, False)
)
# reading .env file
environ.Env.read_env()
# False if not in os.environ
DEBUG = env('DEBUG')
# Raises django's ImproperlyConfigured exception if SECRET_KEY not in os.environ
SECRET_KEY = env('SECRET_KEY')
# Parse database connection url strings like psql://user:pass@127.0.0.1:8458/db
DATABASES = {
# read os.environ['DATABASE_URL'] and raises ImproperlyConfigured exception if not found
'default': env.db(),
# read os.environ['SQLITE_URL']
'extra': env.db('SQLITE_URL', default='sqlite:////tmp/my-tmp-sqlite.db')
}
鏂囩珷鏉ユ簮锛�https://dev.to/sm0ke/django-framework-popular-extensions-a-short-list-130谢谢你!