为django设置助手,以通过单个字符串表示数据库、缓存和电子邮件设置

django-service-urls的Python项目详细描述


django服务url

django-service-urls是django通过单个字符串表示数据库、缓存和电子邮件设置的设置助手。

这项工作基于dj-database-urlhttps://github.com/django/django/pull/8562

示例

原始配置:

DATABASES={'default':{'ENGINE':'django.db.backends.postgresql','NAME':'mydb','HOST':'localhost','PORT':5432,'USER':'myuser','PASSWORD':'mypasswd',},}CACHES={'default':{'BACKEND':'django.core.cache.backends.memcached.MemcachedCache','LOCATION':'127.0.0.1:11211',},}EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend'HOST='localhost'PORT=2525HOST_USER=''HOST_PASSWORD=''USE_TLS=TrueUSE_SSL=FalseSSL_CERTFILE='/etc/ssl/cert'SSL_KEYFILE='/etc/ssl/key'TIMEOUT=600USE_LOCALTIME=False

替换为:

DATABASES={'default':os.environ.get('DATABASE_DEFAULT','postgres://myuser:mypasswd@localhost:5432/mydb'),}CACHES={'default':os.environ.get('CACHE_DEFAULT','memcached://127.0.0.1:11211'),}EMAIL_BACKEND=os.environ.get('EMAIL_BACKEND','smtps://localhost:2525?ssl_certfile=/etc/ssl/cert&ssl_keyfile=/etc/ssl/key&timeout=600')

后端

目前django-service-urls支持三种不同的服务:

数据库(service_urls.db

ServiceBackendURLString
Postgresqldjango.db.backends.postgresqlpostgres://user:passws@host:port/db
Postgresql Socketdjango.db.backends.postgresqlpostgres://%2Fvar%2Frun%2Fpostgresql/db
Postgresql (dj-database-url compat alias)django.db.backends.postgresqlpostgresql://user:passwd@host:port/db
Postgresql (dj-database-url compat alias)django.db.backends.postgresqlpgsql://user:passwd@host:port/db
Postgisdjango.contrib.gis.db.backends.postgispostgis://user:passwd@host:port/db
Sqlite (memory)django.db.backends.sqlite3sqlite://:memory: or sqlite://
Sqlite (file)django.db.backends.sqlite3sqlite:///var/db/database.db
Spatialite (memory)django.contrib.gis.db.backends.spatialitespatialite://:memory: or spatialite://
Spatialite (file)django.contrib.gis.db.backends.spatialitespatialite:///var/db/database.db
Mysqldjango.db.backends.mysqlmysql://user:passwd@host:port/db
Mysql + GISdjango.contrib.gis.db.backends.mysqlmysql+gis://user:passwd@host:port/db
Oracledjango.db.backends.oracleoracle://user:passwd@host:port/db
Oracle + GISdjango.contrib.gis.db.backends.oracleoracle+gis://user:passwd@host:port/db

缓存(service_urls.cache

ServiceBackendURLString
Memorydjango.core.cache.backends.locmem.LocMemCachememory://
Memorydjango.core.cache.backends.locmem.LocMemCachememory://abc
Databasedjango.core.cache.backends.db.DatabaseCachedb://table-name
Dummydjango.core.cache.backends.dummy.DummyCachedummy://
Dummydjango.core.cache.backends.dummy.DummyCachedummy://abc
Memcached: single ipdjango.core.cache.backends.memcached.MemcachedCachememcached://1.2.3.4:1567
Memcached+PyLibMCCache: single ipdjango.core.cache.backends.memcached.PyLibMCCachememcached+pylibmccache://1.2.3.4:1567
Memcached multiple ipsdjango.core.cache.backends.memcached.MemcachedCachememcached://1.2.3.4:1567,1.2.3.5:1568
Memcached+PyLibMCCache multiple ipsdjango.core.cache.backends.memcached.PyLibMCCachememcached+pylibmccache://1.2.3.4:1567,1.2.3.5:1568
Memcached no portdjango.core.cache.backends.memcached.MemcachedCachememcached://1.2.3.4
Memcached+PyLibMCCache no portdjango.core.cache.backends.memcached.PyLibMCCachememcached+pylibmccache://1.2.3.4
Memcached unix socketdjango.core.cache.backends.memcached.MemcachedCachememcached:///tmp/memcached.sock
Memcached+PyLibMCCache unix socketdjango.core.cache.backends.memcached.PyLibMCCachememcached+pylibmccache:///tmp/memcached.sock
Filedjango.core.cache.backends.filebased.FileBasedCachefile://C:/abc/def/xyz
Filedjango.core.cache.backends.filebased.FileBasedCachefile:///abc/def/xyz

电子邮件(service_urls.email

ServiceBackendURLString
Consoledjango.core.mail.backends.console.EmailBackendconsole://
SMTPdjango.core.mail.backends.smtp.EmailBackendsmtp://localhost:25
SMTPS (smtp+tls alias)django.core.mail.backends.smtp.EmailBackendsmtps://localhost:465
SMTP+TLSdjango.core.mail.backends.smtp.EmailBackendsmtp+tls://localhost:465
SMTP+SSLdjango.core.mail.backends.smtp.EmailBackendsmtp+ssl://localhost:587
Filedjango.core.mail.backends.filebased.EmailBackendfile:///var/log/emails
Memorydjango.core.mail.backends.locmem.EmailBackendmemory://
Dummydjango.core.mail.backends.dummy.EmailBackenddummy://

安装

安装软件包

$ python3 -m pip install django-service-urls

manage.py中添加import service_urls.patch

#!/usr/bin/env pythonimportosimportsysimportservice_urls.patchdefmain():os.environ.setdefault('DJANGO_SETTINGS_MODULE','project_name.settings')try:fromdjango.core.managementimportexecute_from_command_lineexceptImportErrorasexc:raiseImportError("Couldn't import Django. Are you sure it's installed and ""available on your PYTHONPATH environment variable? Did you ""forget to activate a virtual environment?")fromexcexecute_from_command_line(sys.argv)if__name__=='__main__':main()

wsgi.py

importosimportservice_urls.patchfromdjango.core.wsgiimportget_wsgi_applicationos.environ.setdefault('DJANGO_SETTINGS_MODULE','project_name.settings')application=get_wsgi_application()

扩展django-service-urls

添加另一个处理程序

可以将另一个处理程序添加到已经存在的处理程序:

my_postgres_backend/service_url.py

fromservice_urls.servicesimportdb,postgresql_config_from_url# postgresql forkpostgresql_config_from_url=db.register(('mypgbackend','my_postgres_backend'))(postgresql_config_from_url)

yourapp/settings.py

importmy_postgres_backend.service_urlDATABASES={'default':'mypgbackend://user:pwd@:/mydb'}

添加其他服务

fromservice_urlsimportServiceclassSearchService(Service):defconfig_from_url(self,engine,scheme,url):parsed=self.parse_url(url)return{'ENGINE':engine,# here all options from parsed}search=SearchService()@search.register(('myengine','my_search_engine'))defsearch_config_from_url(backend,engine,scheme,url):returnbackend.config_from_url(engine,scheme,url)

更改

1.2.0

  • 使用django<;2.2
  • 在django>;1.11下更正设置操作(即:运行覆盖值的测试时)
  • 添加django 2.2支持

1.1.1

  • 正确的sqlite解析器

1.1.0

  • 将助手添加到monkey patch django设置中
  • 文档清理

1.0.2

  • 修复setup.py和manifest.in

1.0.1

  • 修复自述文件错误

1.0.0

  • 添加service_urls.db服务和默认解析器
  • 添加service_urls.cache服务和默认解析器
  • 添加service_urls.email服务和默认解析器

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Intellij通过方法中的包查找用法   java中VS代码和打包命名的问题   将java CMS功能集成到具有高度动态内容的网站(Lucene/Mysql/Nosql)的策略   oracle的java类强制转换异常。jdbc。驾驶员OracleConnection   字节码向JVM添加上指令   如何在抽象类中执行java方法?   java是否可以在apache访问日志中排除指定的GET参数?(作者:W7开发环境)   java如何获取已安装音频播放器的列表?   尝试向HS学生展示如何使用Java访问MS数据库   使用正则表达式java对给定行中的特定字符串进行计数   java JOOQ Select查询中的Select计数   方法Java,如何从二维双精度数组中找到特定值?   获取图像URL的java正则表达式   java在切换到新的窗口驱动程序后找不到元素