Skip to content

biohub.core

Xie Jingyi edited this page Jul 17, 2017 · 1 revision

概述

biohub.core 包含以下内容:自定义 manage.py 命令、全局 urlpatterns 注册器。

自定义 manage.py 命令

为了更好的团队开发体验,biohub 新增/覆盖了若干 manage.py 中的命令。

startapp

startapp 命令有两个主要的改动:

  • 当不指定输出目录时,原命令默认在当前目录($PWD)下创建 app,新命令则默认在 ~/biohub/ 下创建(即与 core/main/ 同级)
  • 新命令覆盖了默认的 app 模板(可在 ~/biohub/core/app_template/ 中找到)。

codestyle

codestyle 命令用于检查整个项目中的 python 代码是否符合 PEP8 规范。

test

本次项目使用 pytest 作为测试框架,测试文件需放置于 ~/tests/ 中,运行 manage.py test 可执行其中所有的测试样例。

manage.py test 有若干参数:

  • --recreate:默认情况下,测试完成后 django 并不销毁测试数据库。若在开发过程中对表结构作了修改,需加上此参数以重新构建测试数据库。
  • 若干其他可选参数:用于指定本次测试的测试样例,可以是测试样例的目录或文件。如 manage.py test accounts/ 会执行 ~/tests/accounts/ 下的所有测试样例。

全局 urlpatterns 注册器

描述

考虑到其他开发者在开发插件的过程中会添加自定义的路由,为了避免他们直接修改 biohub 中的文件,biohub 提供了自主注册路由的机制,希望组员在开发的过程中也使用这样的机制

biohub 默认存在两个根 URLConf:

  • r'^/api'namespace='api':RESTful API 的根路由
  • r'^'namespace='default':默认的根路由

biohub.core.routes 中定义了注册的接口:register_apiregister_default,它们有着相同的函数签名:

register(prefix, urlpatterns, namespace=None)

  • prefix 为此模块的公共 URL 前缀
  • urlpatterns 为被注册的路由列表
  • namespace 为可选的命名空间,用于路由反查

路由需被定义在每个 urls.pybiohub.core 已开启了对此文件的 Auto Discovery。

一个例子(biohub.accounts.urls):

from rest_framework.routers import DefaultRouter

from biohub.core.routes import register_api, url

from . import views

router = DefaultRouter()
router.register(r'users', views.UserViewSet)

register_api(r'^', [
    url(r'^users/register/$', views.register, name='register'),
    url(r'^users/login/$', views.login, name='login'),
    url(r'^users/logout/$', views.logout, name='logout'),
    url(r'^users/change_password/$',
        views.change_password, name='change-password')
] + router.urls, 'accounts')

在这个例子中:

  • reverse('api:accounts:register') == '/api/users/register/'
  • reverse('api:accounts:user-list') == '/api/users/'
Clone this wiki locally