【山大智云项目日志】Seahub+Proset分析(2)

【山大智云项目日志】Seahub+Proset分析(2),第1张

【山大智云项目日志】Seahub+Proset分析(2)

2021SC@SDUSC

前面我已经对Seahub+Proset有了初步的学习,接下来我们继续进行分析。

Seahub

之前我已经对Django和React框架有了初步的学习,在此基础上我们可以对Seahub的主要部分seahub和frontend进行分析。这里我们先对seahub部分进行分析。

seahub部分主要使用的是Django框架,下面的图片展示了整体的结构:

首先我们先分析一下settings.py文件。settings.py 文件是 Django 项目的重要配置文件。项目启动时,settings.py 配置文件会被自动调用,而它定义的一些全局为 Django 运行提供参数,在此配置文件中也可以自定义一些变量,用于全局作用域的数据传递。下面我们开始分析。

# Copyright (c) 2012-2016 Seafile Ltd.
# -*- coding: utf-8 -*-
# Django settings for seahub project.

import sys
import os
import re

from seaserv import FILE_SERVER_ROOT, FILE_SERVER_PORT, SERVICE_URL

这是settings.py文件需要加载的各个模块。

PROJECT_ROOT = os.path.join(os.path.dirname(__file__), os.pardir)

这行代码可以确定项目的父目录。

__file__ 是 Python 的语法,显示当前文件的位置;os.path.dirname(__file__)则是返回文件路径;os.pardir是获取当前目录的父目录;os.path.join()可以将两个或更多的路径名连接起来。本文件也包含了许多重要文件的路径。

DEBUG = False

用于配置 Django 项目的启用模式,有两种取值方式:

DEBUG = True用于在开发环境中使用,属于调试模式,在项目的运行过程中会暴露一些错误信息以方便调试;DEBUG = False用于线上环境,表示不启用调试模式。

DATAbaseS = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': '%s/seahub/seahub.db' % PROJECT_ROOT, # Or path to database file if using sqlite3.
        'USER': '',                      # Not used with sqlite3.
        'PASSWORD': '',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}

它用于指定数据库配置信息,这里默认配置的是 Django 自带的 sqllite3 数据库。Django 支持多种数据库,在这个字典变量中更改数据库配置。

TIME_ZONE = 'UTC'

设置时区。

LANGUAGE_CODE = 'en'

设置语言。

MIDDLEWARE = [
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'seahub.auth.middleware.AuthenticationMiddleware',
    'seahub.base.middleware.baseMiddleware',
    'seahub.base.middleware.InfobarMiddleware',
    'seahub.password_session.middleware.CheckPasswordHash',
    'seahub.base.middleware.ForcePasswdChangeMiddleware',
    'termsandconditions.middleware.TermsAndConditionsRedirectMiddleware',
    'seahub.two_factor.middleware.OTPMiddleware',
    'seahub.two_factor.middleware.ForceTwoFactorAuthMiddleware',
    'seahub.trusted_ip.middleware.LimitIpMiddleware'
]

它用于注册中间件。所谓中间件就是从用户请求到用户请求结束期间所做的 *** 作,即用户的请求会次从上到下依次执行MIDDLEWARE中的配置,然后服务器响应用户的时候会再次从下至上依次执行。Django 默认加载了一些中间件,例如,用于处理会话的 SessionMiddleware 等,同样我们可以对这些中间件进行添加或者注释。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            os.path.join(PROJECT_ROOT, '../../seahub-data/custom/templates'),
            os.path.join(PROJECT_ROOT, 'seahub/templates'),
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.i18n',
                'django.template.context_processors.media',
                'django.template.context_processors.static',
                'django.template.context_processors.request',
                'django.contrib.messages.context_processors.messages',

                'seahub.auth.context_processors.auth',
                'seahub.base.context_processors.base',
                'seahub.base.context_processors.debug',
            ],
        },
    },
]

它用于指定模板的配置信息。里面BACKEND是Django内置的模板;DIR是本地的templates的路径;APP_DIRS是本地应用的路径,True表示默认的方式。OPTIONS包含特定于后端的设置。

INSTALLED_APPS = [
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    # In order to overide command `createsuperuser`, base app *must* before auth app.
    # ref: https://docs.djangoproject.com/en/1.11/howto/custom-management-commands/#overriding-commands
    'seahub.base',
    'django.contrib.auth',

    'registration',
    'captcha',
    'statici18n',
    'constance',
    'constance.backends.database',
    'termsandconditions',
    'webpack_loader',

    'seahub.api2',
    'seahub.avatar',
    'seahub.contacts',
    'seahub.drafts',
    'seahub.institutions',
    'seahub.invitations',
    'seahub.wiki',
    'seahub.group',
    'seahub.notifications',
    'seahub.options',
    'seahub.onlyoffice',
    'seahub.profile',
    'seahub.share',
    'seahub.help',
    'seahub.thumbnail',
    'seahub.password_session',
    'seahub.admin_log',
    'seahub.wopi',
    'seahub.tags',
    'seahub.revision_tag',
    'seahub.two_factor',
    'seahub.role_permissions',
    'seahub.trusted_ip',
    'seahub.repo_tags',
    'seahub.file_tags',
    'seahub.related_files',
    'seahub.work_weixin',
    'seahub.file_participants',
    'seahub.repo_api_tokens',
    'seahub.abuse_reports',
    'seahub.repo_auto_delete',
    'seahub.ocm',
]

这个参数是指当前项目中用来安装的应用(APP)的列表,Django 把默认自带的应用放在这个列表里。INSTALLED_APPS 这个设置告诉Django哪些app是启用的。我们也可以根据自己的项目需求对其进行增加或删除。

settings.py文件的基本配置我们已经分析完毕。之后我会继续对seahub的其他部分以及proset进行分析。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/3973184.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-21
下一篇 2022-10-21

发表评论

登录后才能评论

评论列表(0条)

保存