Django配置实用程序,用于管理项目中的多个“网站”。
site_config的Python项目详细描述
##关于
[![构建状态](https://travis-ci.org/imaginaryscapture/django_site_config.svg?branch=master)"(https://travis ci.org/imaginaryscapture/django_site_config)
[![下载](https://pypip.in/download/site_-config/badge.svg)(https://pypi.python.org/pypi/site_-config/)
此模块为您提供了一个api,允许您对django
应用程序进行编码,以便这些应用程序可以将自己的
分割成多个部分,并且每个
部分都有不同的设置。
例如,假设我想在两个不同的
url路径下使用同一个应用程序,并且对这两个路径都有不同的行为(不同的设置)。
/mysite1/myapp/
/mysite2/myapp/
另外,假设我想通过管理界面在这些不同的
url上启用或禁用单个应用程序。
另外,假设我想有一个一致的方法来定义这些应用程序的设置。
此模块帮助您完成这些任务。
install from pip
>pip install site_-config
>install from github
>git-clone https://github.com/imaginaryarylandscap/django_site_-config.git
后端。
siteconfig后端负责从/到持久位置获取和设置设置。
当前,此模块中存在两个后端:
-model_backend
-settings_backend
model_backend在一组数据库中存储配置设置。它允许在管理界面的
中自定义给定应用程序的设置,并允许在应用程序中为不同的
"网站"设置不同的设置。选择此后端将启用django
管理模块来设置这些设置。
设置后端是一个使用settings.py的简单后端。这个
不是动态的;当应用程序需要设置时,这个后端只是从settings.py中查找它。
ackends.settings_backend',
如果使用模型后端,则在models.py中定义的网站、应用程序和
website application模型应显示在
django管理中。如果使用设置后端,则不应显示这些设置。
"base.html"模板的ts
可以扩展变量。与
在项目的"base.html"模板中包含所有模板逻辑不同,
您可以将此逻辑移到另一个模板(
实例的"base-site.html")并具有"base.html"be:
{%extends base-template;默认值:"base-site.html"%}
文档),您可以在
站点的模板文件夹中创建一个"base_site.html"模板,如果存在,将使用该模板。
如果未定义此设置,则默认为模型后端。
使用"decise\u base\u template"上下文时,默认的
基本模板应该是什么样的
处理器。如果这个上下文处理器不是used,此设置没有
效果。
有效值
为:"禁用"、"限制"或"启用"默认值为"启用"
-siteconfig_cheather_message(可选)=当siteconfig_siteapp_status设置为
"限制"时,设置帘幕
/>
如果使用model_后端,则需要运行以下命令:
./manage.py syncdb
./manage.py migrate
1.创建配置类
create在django应用程序的初始化py、
models.py或django第一次执行时调用的其他位置添加以下类。定义"application_short_name"和
"application_verbose_name"属性。
实现"get_default_configs()"方法。这必须返回
配置字典,其中键是应用程序的配置
变量,值是嵌套元数据
字典。
每个嵌套字典必须包含3个键:
-default=键will take
-field=用于验证值的django字段实例
-help(可选)=描述键的帮助文本项
-choices(可选)=约束输入的元组列表。
仅适用于与choicefield类似的字段作为构造函数一部分的选项
即(('a_short_name','a text'),('b_short_name','b text'))
您还需要使用"register()"
方法注册配置类。
请参见下面的示例:
/path/to/myproject/myapp/\u init__.py
导入站点配置
类foo site config(站点配置.siteconfigbase):
application_short_name="foo"
application_verbose_name="foo application"
您需要自定义用于给定配置的后端
。
def get_backend(self):
backend=getattr(settings,'site config_backend_default',
'site_config.backends.model_backend.databasebackend')
return后端
def get_default_configs(self):
返回{'test_a':{'default':"test a default",
'field':'django.forms.charfield',
'help':'test a help text.},
"测试B":{默认值:1,
"字段":"django.forms.integerfield",
"帮助":"测试B帮助文本"。}
site_config.registy.config_registry.register(myappsiteconfig)
2。通过enable_disable_website()decorator启用和禁用URL
要使用django_site_config启用和禁用特定视图的功能,您需要按如下方式包装您的URL。
要使用此网站切换功能,您需要
作为url字符串的一部分传入"website"kwarg。
/path/to/myproject/myapp/urls.py
from django.conf.urls导入模式,include,url
from site_config.decorators import enable_disable_website,decorated_includes
from example.app_foo im端口fooconfig
从.views导入indexview
=[
url('^(?)p<;website>;[\w-]+)/foo/$',
启用禁用网站(index view.as_view(
template_name='index.html'),fooconfig),
{},
name="app_foo_index"
]
一个完整的include
url patterns+=修饰的include(lambda func:启用/禁用网站(func,barconfig),
模式('',url(r'^(?)p<;website>;[\w-]+)/bar/',include('example.app_bar.url'))
)
注意:根据django文档,您还可以使用此enable_disable_website()函数装饰django cbv或fbv。
注意:您的视图必须接受"website"关键字参数。
3.允许模板覆盖
此模块还提供了一种覆盖
特定站点模板的方法。
对于基于函数的视图
通常,如果FBV在URL中定义了模板名称参数,则视图将查找t模板文件通过
普通模板加载链。
包装单个url
urlpatterns=[
url('^(?)p<;website>;[\w-]+)/foo/$',
网站模板覆盖(index view.as_view(
模板名称='index.html'),
{},
名称='app_foo_index"
]
轮胎包括
url patterns+=装饰包括(网站模板覆盖,
图案('',url(r'^(?)p<;website>;[\w-]+)/bar/',
include('example.app_bar.urls'))
启用禁用网站(func,barconfig),
网站模板覆盖,
,
模式('',url(r'^(?)p<;website>;[\w-]+)/bar/',
include('example.app_bar.url'))
)
网站变量可用于
视图逻辑。
/path/to/myproject/myapp/views.py
/>返回render_to_response(模板名,
{config':config,},
context_instance=requestcontext(请求))
乘坐行为。
/path/to/myproject/myapp/views.py
from site_config.utils import websiteoveritetemplateviewmixin
from site_config.decorators import website_template_override
from example.app_bar import barconfig
class indexview(websiteoverridetemplateviewmixin,templateview):
def dispatch(self,request,*args,**kwargs):
self.website=kwargs.get('website',none)
self.config=barconfig(website=self.website)
return super(indexview,self)。dispatch(request,*args,**kwargs))
def获取上下文数据(self,**kwargs):
kwargs['config']=self.config
kwargs['website']=self.website
返回Kwargs
4。通过调用设置
,您可以访问视图或模板中的设置,就像调用config类中的属性一样。
下面是一个用法示例:
ass必须在视图中实例化,每次请求视图时都将适当的
网站传递给构造器(或无)。
S标记为
"谢幕"。注意,默认模板扩展了"base.html"
,因此这需要出现在应用程序中。
站点配置/限制.html
[![构建状态](https://travis-ci.org/imaginaryscapture/django_site_config.svg?branch=master)"(https://travis ci.org/imaginaryscapture/django_site_config)
[![下载](https://pypip.in/download/site_-config/badge.svg)(https://pypi.python.org/pypi/site_-config/)
此模块为您提供了一个api,允许您对django
应用程序进行编码,以便这些应用程序可以将自己的
分割成多个部分,并且每个
部分都有不同的设置。
例如,假设我想在两个不同的
url路径下使用同一个应用程序,并且对这两个路径都有不同的行为(不同的设置)。
/mysite1/myapp/
/mysite2/myapp/
另外,假设我想通过管理界面在这些不同的
url上启用或禁用单个应用程序。
另外,假设我想有一个一致的方法来定义这些应用程序的设置。
此模块帮助您完成这些任务。
install from pip
>pip install site_-config
>install from github
>git-clone https://github.com/imaginaryarylandscap/django_site_-config.git
后端。
siteconfig后端负责从/到持久位置获取和设置设置。
当前,此模块中存在两个后端:
-model_backend
-settings_backend
model_backend在一组数据库中存储配置设置。它允许在管理界面的
中自定义给定应用程序的设置,并允许在应用程序中为不同的
"网站"设置不同的设置。选择此后端将启用django
管理模块来设置这些设置。
设置后端是一个使用settings.py的简单后端。这个
不是动态的;当应用程序需要设置时,这个后端只是从settings.py中查找它。
ackends.settings_backend',
如果使用模型后端,则在models.py中定义的网站、应用程序和
website application模型应显示在
django管理中。如果使用设置后端,则不应显示这些设置。
"base.html"模板的ts
可以扩展变量。与
在项目的"base.html"模板中包含所有模板逻辑不同,
您可以将此逻辑移到另一个模板(
实例的"base-site.html")并具有"base.html"be:
{%extends base-template;默认值:"base-site.html"%}
文档),您可以在
站点的模板文件夹中创建一个"base_site.html"模板,如果存在,将使用该模板。
如果未定义此设置,则默认为模型后端。
使用"decise\u base\u template"上下文时,默认的
基本模板应该是什么样的
处理器。如果这个上下文处理器不是used,此设置没有
效果。
有效值
为:"禁用"、"限制"或"启用"默认值为"启用"
-siteconfig_cheather_message(可选)=当siteconfig_siteapp_status设置为
"限制"时,设置帘幕
/>
如果使用model_后端,则需要运行以下命令:
./manage.py syncdb
./manage.py migrate
1.创建配置类
create在django应用程序的初始化py、
models.py或django第一次执行时调用的其他位置添加以下类。定义"application_short_name"和
"application_verbose_name"属性。
实现"get_default_configs()"方法。这必须返回
配置字典,其中键是应用程序的配置
变量,值是嵌套元数据
字典。
每个嵌套字典必须包含3个键:
-default=键will take
-field=用于验证值的django字段实例
-help(可选)=描述键的帮助文本项
-choices(可选)=约束输入的元组列表。
仅适用于与choicefield类似的字段作为构造函数一部分的选项
即(('a_short_name','a text'),('b_short_name','b text'))
您还需要使用"register()"
方法注册配置类。
请参见下面的示例:
/path/to/myproject/myapp/\u init__.py
导入站点配置
类foo site config(站点配置.siteconfigbase):
application_short_name="foo"
application_verbose_name="foo application"
您需要自定义用于给定配置的后端
。
def get_backend(self):
backend=getattr(settings,'site config_backend_default',
'site_config.backends.model_backend.databasebackend')
return后端
def get_default_configs(self):
返回{'test_a':{'default':"test a default",
'field':'django.forms.charfield',
'help':'test a help text.},
"测试B":{默认值:1,
"字段":"django.forms.integerfield",
"帮助":"测试B帮助文本"。}
site_config.registy.config_registry.register(myappsiteconfig)
2。通过enable_disable_website()decorator启用和禁用URL
要使用django_site_config启用和禁用特定视图的功能,您需要按如下方式包装您的URL。
要使用此网站切换功能,您需要
作为url字符串的一部分传入"website"kwarg。
/path/to/myproject/myapp/urls.py
from django.conf.urls导入模式,include,url
from site_config.decorators import enable_disable_website,decorated_includes
from example.app_foo im端口fooconfig
从.views导入indexview
=[
url('^(?)p<;website>;[\w-]+)/foo/$',
启用禁用网站(index view.as_view(
template_name='index.html'),fooconfig),
{},
name="app_foo_index"
]
一个完整的include
url patterns+=修饰的include(lambda func:启用/禁用网站(func,barconfig),
模式('',url(r'^(?)p<;website>;[\w-]+)/bar/',include('example.app_bar.url'))
)
注意:根据django文档,您还可以使用此enable_disable_website()函数装饰django cbv或fbv。
注意:您的视图必须接受"website"关键字参数。
3.允许模板覆盖
此模块还提供了一种覆盖
特定站点模板的方法。
对于基于函数的视图
通常,如果FBV在URL中定义了模板名称参数,则视图将查找t模板文件通过
普通模板加载链。
包装单个url
urlpatterns=[
url('^(?)p<;website>;[\w-]+)/foo/$',
网站模板覆盖(index view.as_view(
模板名称='index.html'),
{},
名称='app_foo_index"
]
轮胎包括
url patterns+=装饰包括(网站模板覆盖,
图案('',url(r'^(?)p<;website>;[\w-]+)/bar/',
include('example.app_bar.urls'))
启用禁用网站(func,barconfig),
网站模板覆盖,
,
模式('',url(r'^(?)p<;website>;[\w-]+)/bar/',
include('example.app_bar.url'))
)
网站变量可用于
视图逻辑。
/path/to/myproject/myapp/views.py
/>返回render_to_response(模板名,
{config':config,},
context_instance=requestcontext(请求))
乘坐行为。
/path/to/myproject/myapp/views.py
from site_config.utils import websiteoveritetemplateviewmixin
from site_config.decorators import website_template_override
from example.app_bar import barconfig
class indexview(websiteoverridetemplateviewmixin,templateview):
def dispatch(self,request,*args,**kwargs):
self.website=kwargs.get('website',none)
self.config=barconfig(website=self.website)
return super(indexview,self)。dispatch(request,*args,**kwargs))
def获取上下文数据(self,**kwargs):
kwargs['config']=self.config
kwargs['website']=self.website
返回Kwargs
4。通过调用设置
,您可以访问视图或模板中的设置,就像调用config类中的属性一样。
下面是一个用法示例:
ass必须在视图中实例化,每次请求视图时都将适当的
网站传递给构造器(或无)。
S标记为
"谢幕"。注意,默认模板扩展了"base.html"
,因此这需要出现在应用程序中。
站点配置/限制.html