Django setting.py中BASE_DIR解析

最近被django的一些路径问题搞蒙了,真的是基础不牢啊,这里我就写点关于BESE_DIR这些路径配置的体会
在这里插入图片描述
在这里插入图片描述
我们一层一层的辨析
1.os.path.abspath(file)返回的是.py文件的绝对路径,也就是settings.py这个文件路径

2.os.path.dirname(os.path.abspath(file)),也就是settings.py这个文件的目录,我们这里是djangotest这个目录

3.BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(file))),这里BASE_DIR也就是整个工程project的目录,即djangotest这个目录

### Django `settings.py` 文件中的重要配置项 以下是 Django 项目中常见的 11 个重要配置项及其作用: #### 1. **SECRET_KEY** 用于加密签名和其他安全相关操作的秘密密钥。它应该是一个随机字符串,且不应泄露给任何人。 ```python SECRET_KEY = 'your-secret-key-here' ``` 如果未正确设置该值,则可能导致安全性漏洞[^1]。 --- #### 2. **DEBUG** 控制调试模式的开关。当其值为 `True` 时,会显示详细的错误页面;生产环境中应将其设为 `False`。 ```python DEBUG = True # 开发环境 DEBUG = False # 生产环境 ``` --- #### 3. **ALLOWED_HOSTS** 定义允许访问站点的主机名列表,在生产环境中尤为重要。 ```python ALLOWED_HOSTS = ['example.com', 'www.example.com'] ``` 如果不设置或为空数组,可能会引发 HTTP 请求被拒绝的情况。 --- #### 4. **INSTALLED_APPS** 列出所有已启用的应用程序以及第三方库。 ```python INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', ... 'myapp', ] ``` --- #### 5. **MIDDLEWARE** 中间件类的顺序非常重要,它们处理请求和响应的过程。 ```python MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', ... ] ``` --- #### 6. **DATABASES** 数据库连接配置,默认情况下支持 SQLite、PostgreSQL、MySQL 和 Oracle 数据库。 ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } } ``` 对于其他类型的数据库,需调整 `ENGINE` 和额外参数[^3]。 --- #### 7. **TIME_ZONE** 设定项目的默认时区。Django 使用此值来管理日期时间对象的行为。 ```python TIME_ZONE = 'Asia/Shanghai' ``` 需要注意的是,虽然可以手动修改 `os.environ['TZ']` 的值,但在某些特定场景下 Django 不会自动更改这一变量。 --- #### 8. **LANGUAGE_CODE** 指定网站的语言代码。 ```python LANGUAGE_CODE = 'en-us' # 英语 (美国) LANGUAGE_CODE = 'zh-hans' # 简体中文 ``` --- #### 9. **USE_I18N**, **USE_L10N**, **USE_TZ** 这些布尔值分别表示是否开启国际化 (`i18n`)、本地化 (`l10n`) 和时区支持。 ```python USE_I18N = True USE_L10N = True USE_TZ = True ``` --- #### 10. **STATIC_URL** 和 **STATIC_ROOT** 静态文件的相关配置。 ```python STATIC_URL = '/static/' STATIC_ROOT = BASE_DIR / 'staticfiles' ``` 开发阶段通常不需要关心 `STATIC_ROOT`,但部署到服务器时需要收集静态资源并指向该路径。 --- #### 11. **TEMPLATES** 模板引擎的配置,主要用于渲染 HTML 页面。 ```python TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', ... ], }, }, ] ``` --- ### 示例代码片段 以下展示如何初始化部分核心配置: ```python from pathlib import Path # 定义基础目录 BASE_DIR = Path(__file__).resolve().parent.parent # 秘钥配置 SECRET_KEY = 'your-secret-key' # 调试模式 DEBUG = True # 允许的主机 ALLOWED_HOSTS = [] # 应用安装 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', ] # 中间件 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', ] # 数据库配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } } # 静态文件 URL STATIC_URL = '/static/' # 模板配置 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, } ] ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值