django设置帮助程序
django-classsettings的Python项目详细描述
只是一个django设置助手的集合。
要求
- python 2.6、2.7、3.2、3.3
- Django 1.4-1.6
设置
设置类-添加将django设置与类分组的功能。许多文本编辑器和ide都为代码符号编制索引,使用这种方法可以 轻松导航到任何组和设置文件的任何行。
classApps(Settings):defDJANGO_APPS(self):return('django.contrib.auth',...)defTHIRD_PARTY_APPS(self):return('rest_framework','south',)defOWN_APPS(self):return('app1','app2',)defINSTALLED_APPS(self):returnself.DJANGO_APPS()+self.THIRD_PARTY_APPS()+self.OWN_APPS()
使用sublime text 3按Cmd+Shift+R
,然后键入“third”。
对于template_context_processors,middleware_classes等也可以这样做。
config类-将变量字典注入模块的作用域:
fromclasssettingsimportConfigclassREST_FRAMEWORK(Config):defDEFAULT_FILTER_BACKENDS(self):return('rest_framework.filters.DjangoFilterBackend',)DEFAULT_RENDERER_CLASSES=('rest_framework.renderers.YAMLRenderer',)
将导致
REST_FRAMEWORK={'DEFAULT_FILTER_BACKENDS':('rest_framework.filter.DjangoFilterBackend',),'DEFAULT_RENDERER_CLASSES':('rest_framework.renderers.YAMLRenderer',)}
可能会发现一些装饰器很有用:
fromclasssettingsimportSettings,from_envclassMySettingsGroup(Settings):# Will look for `EMAIL_HOST` key in `os.environ`# and use `smtp.gmail.com` if such key was not found@from_envdefEMAIL_HOST(self):return'smtp.gmail.com'# Will raise Django's `ImproperlyConfigured` exception# if such key was not found@from_envdefSECRET_KEY(self):pass# Will look for specified key@from_env(key='CUSTOM_ENV_VAR_NAME')defvariable(self):pass# Will apply `through` callable to result@from_env(through=dj_database_url.parse)defDATABASE_URL(self):return'sqlite://'
urlconfs助手
sample urlconf:
fromdjango.conf.urlsimportpatterns,urlimportviewsurlpatterns=patterns('',url(r'^$',views.ProjectList.as_view(),name='projects_project_list'),url(r'^create/$',views.ProjectCreate.as_view(),name='projects_project_create'),url(r'^view/(?P<pk>\w+)/$',views.ProjectDetail.as_view(),name='projects_project_view'),url(r'^update/(?P<pk>\w+)/$',views.ProjectUpdate.as_view(),name='projects_project_update'),url(r'^delete/(?P<pk>\w+)/$',views.ProjectDelete.as_view(),name='projects_project_delete'),url('^accounts/(?P<pk>\d+)/$','project.accounts.profile_info',name='users_info')url('^accounts/edit/$','project.accounts.profile_edit',name='users_edit'))
相当于
fromclasssettings.urlsimportScope,urlimportviews## Define url pattern, views or view name prefix:## Views resolution:## some.module, 'string' => getattr(module, 'string')# 'scope_str', 'string' => 'string'.format('scope_str', ...)#withScope(regex='^',views=views,name='projects')asroot:## Strings are formatted with `str.format`:## value.format(value_of_parent_scope, **scope.context)## Additional context variables can be defined and used with `{variable}`withScope(name='{}_project',pk=r'(?P<pk>\w+)')asproject:# Also supportedproject['pk']=r'(?P<pk>\w+)'# For CBV `.as_view()` is called automaticallyurl('{}$','ProjectList',name='{}_list')# url => '^$', name => 'projects_project_list'url('{}create/$','ProjectCreate',name='{}_create')url('{}view/{pk}/$','ProjectDetail',name='{}_detail')url('{}update/{pk}/$','ProjectUpdate',name='{}_update')url('{}delete/{pk}/$','ProjectDelete',name='{}_delete')withScope(regex='{}accounts/',views='project.accounts',name='users',user_id=r'(?P<pk>\d+)'):url('{}{user_id}?/$','{}.profile_info',name='{}_info')url('{}edit/$','{}.profile_edit',name='{}_edit')urlpatterns=root.urls
对于在Scope object外部定义的url,使用本机django的url函数