构建 Django 应用程序
Structuring Django application
我目前正在设计一个供研究人员用来进行评论的网络应用程序。在此应用程序中有两组用户 - 参与者和管理员。
只有管理员可以开始审核,并且可以指定任何用户或管理员作为管理员或筛选者参与审核。每次审核的一般工作流程为:
- 搜索医学数据库并导入数千条参考文献。
- 基于标题的屏幕引用(reviewers/admins 屏幕的数量可以是 1 个或多个)。每个审稿人将筛选所有参考文献。将每个参考标记为包含或排除。
- 屏幕包含基于摘要的参考文献。同上适用。
- 来源 full-text 为 PDF 并存储以供参考。
- 屏幕包括基于全文的参考。同上适用。
- 创建自定义表单。
- 从包含的参考文献中提取数据。
- 导出数据
在整个审查过程中,将完成对所有参考资料的机器学习。我们还需要在整个审查过程中进行全面的日志记录。
我的问题是,如何最好地将这些部分拆分为 Django 应用程序以及我应该如何构建所需的数据库。
暂时,我考虑过拥有这些数据库:
- 用户。存储有关筛选者和审阅者的信息,以及哪些项目中有 tenner 和管理员。
- 项目。存储每个项目的基本信息,包括数据提取表。与引用 table 的一对多关系。
- 参考资料。存储有关每个参考文献的信息,包括包含状态和数据提取。
我不知道如何处理日志记录。我该怎么做?
这是一个明智的拆分吗?如果是这样,我应该如何将这些步骤相应地拆分为应用程序。
Django 最好的地方是 apps
,您可以使用 manage.py startapp <myapp>
创建。应用程序可以很好地控制模块化代码。您在模块化代码方面走在正确的轨道上。
关于您的表格,用户、项目和参考,从您的解释来看是合理的。
如果我是你,我会将应用构建成这样。
apps/
userprofile/ (users table )
project/ (projects and references tables)
activity/ (activity and notifications tables)
关于日志记录
每个 activity 用户编辑、项目编辑或删除都可以通过 post_ 或 pre_ 信号 https://docs.djangoproject.com/en/1.10/topics/signals/ 捕获。使用它们创建一个 activity 并基于 activity 您可以将单个 activity 作为通知发布给多个用户,即单个 activity 将触发每个通知给多个参加活动的用户。
在每个应用程序中
我更喜欢在每个应用程序中使用以下结构:
userprofile/
__init__
views.py
tests.py
signals.py # write the post_save pre_save post_delete pre_delete logics here
managers.py # take full leverage of managers, and custom querysets
forms.py
models.py
urls.py
admin.py
tasks.py # for celery or tasks which will be used by queuing systems
apps.py
关于版本数据
从这里尝试适合您要求的那个 https://djangopackages.org/grids/g/model-audit/
我目前正在设计一个供研究人员用来进行评论的网络应用程序。在此应用程序中有两组用户 - 参与者和管理员。
只有管理员可以开始审核,并且可以指定任何用户或管理员作为管理员或筛选者参与审核。每次审核的一般工作流程为:
- 搜索医学数据库并导入数千条参考文献。
- 基于标题的屏幕引用(reviewers/admins 屏幕的数量可以是 1 个或多个)。每个审稿人将筛选所有参考文献。将每个参考标记为包含或排除。
- 屏幕包含基于摘要的参考文献。同上适用。
- 来源 full-text 为 PDF 并存储以供参考。
- 屏幕包括基于全文的参考。同上适用。
- 创建自定义表单。
- 从包含的参考文献中提取数据。
- 导出数据
在整个审查过程中,将完成对所有参考资料的机器学习。我们还需要在整个审查过程中进行全面的日志记录。
我的问题是,如何最好地将这些部分拆分为 Django 应用程序以及我应该如何构建所需的数据库。
暂时,我考虑过拥有这些数据库:
- 用户。存储有关筛选者和审阅者的信息,以及哪些项目中有 tenner 和管理员。
- 项目。存储每个项目的基本信息,包括数据提取表。与引用 table 的一对多关系。
- 参考资料。存储有关每个参考文献的信息,包括包含状态和数据提取。
我不知道如何处理日志记录。我该怎么做?
这是一个明智的拆分吗?如果是这样,我应该如何将这些步骤相应地拆分为应用程序。
Django 最好的地方是 apps
,您可以使用 manage.py startapp <myapp>
创建。应用程序可以很好地控制模块化代码。您在模块化代码方面走在正确的轨道上。
关于您的表格,用户、项目和参考,从您的解释来看是合理的。
如果我是你,我会将应用构建成这样。
apps/
userprofile/ (users table )
project/ (projects and references tables)
activity/ (activity and notifications tables)
关于日志记录 每个 activity 用户编辑、项目编辑或删除都可以通过 post_ 或 pre_ 信号 https://docs.djangoproject.com/en/1.10/topics/signals/ 捕获。使用它们创建一个 activity 并基于 activity 您可以将单个 activity 作为通知发布给多个用户,即单个 activity 将触发每个通知给多个参加活动的用户。
在每个应用程序中
我更喜欢在每个应用程序中使用以下结构:
userprofile/
__init__
views.py
tests.py
signals.py # write the post_save pre_save post_delete pre_delete logics here
managers.py # take full leverage of managers, and custom querysets
forms.py
models.py
urls.py
admin.py
tasks.py # for celery or tasks which will be used by queuing systems
apps.py
关于版本数据
从这里尝试适合您要求的那个 https://djangopackages.org/grids/g/model-audit/