django设置帮助程序

django-classsettings的Python项目详细描述


https://travis-ci.org/dferens/django-classsettings.png?branch=masterhttps://coveralls.io/repos/dferens/django-classsettings/badge.png?branch=master

只是一个django设置助手的集合。

  1. Requirements
  2. Settings
  3. urlconfs helpers

要求

  • 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 3Cmd+Shift+R,然后键入“third”。 对于template_context_processorsmiddleware_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函数

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

推荐PyPI第三方库


热门话题
java如果数组是单调递增或单调递减的,则它是单调的   java异步任务:doInBackground未完成   java数组逻辑错误   在Java桌面应用程序中加载应用程序属性   小程序windows上的Java控制面板如何与机器上安装的许多不同版本的Java一起工作?   许多循环的java循环策略   java Android Studio无法转到管理页面   java为什么集成测试的执行时间在SpringBoot2.2中显著增加?   java Grails dbmupdate失败:MySQLSyntaxErrorException:您的SQL语法有错误   字符串非常简单:用Java编写“”   java Wicket反馈消息和AjaxButton   java Oreo、默认短信应用程序和操作通过消息进行响应   Java将字符串中的\“替换为”   Java中的html意外URL请求结果   java在拼花文件格式中INT64和十进制(18,6)意味着什么?   java如何查看PDF文件   java在向powershell中的程序传递参数时遇到问题   继承如何在不同实现/类/etc的java中调用toString()   java Count可抓获的最大窃贼数