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进行分析。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)