Django 系列篇(二):配置篇(上)

系列导读

01. Django 系列篇(一):Hello World!

1. Django 有哪些配置

创建一个项目之后,会自动在项目根目录下生成一个配置文件,即:settings.py

分为运行环境和基础功能的配置,主要包含:App、中间件、模板、数据库、域名访问权限、项目路径等

2. 基本配置

基本配置包含对项目路径、域名访问、密钥、App 列表的配置。

一般来说,项目路径和密钥配置 是自动生成的,不需要进行修改配置。

其中密钥是随机生成的一个字符串,用于重要数据,包含:密码、CSRF 机制、Session 的加密处理。

调试模式在开发阶段,应设置为 True,部署上线时,应更改为:False

域名访问设置可以访问的域名列表,当 DEBUG 为 True 时,默认只能在本机浏览器访问调试;否则需要填写 ALLOWED_HOSTS,指定容许访问的域名。

# 设置可以访问的域名
# 使用 ['*'] 容许所有域名访问
ALLOWED_HOSTS = ['*']

内置 App 包含:

  • admin  后台管理系统

  • auth  用户认证系统

  • contenttypes  模型 Model 元数据

  • sessions  Session 会话,用于记录用户信息

  • messages  消息提示功能

  • staticfiles  静态资源查找

另外,可以通过 manage.py 命令行工具新建 App,然后在列表中进行配置。

3. 静态资源配置

静态资源指网站中不会改变的文件,主要包含:CSS 文件、JS 文件、图片等资源,配置属性有 3 种,分别是:STATIC_URL、STATICFILES_DIRS、STATIC_ROOT

STATIC_URL 代表资源路由,Django 对于静态资源,默认配置信息如下:

# settings.py
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.0/howto/static-files/

STATIC_URL = '/static/'

如果资源路由保持默认值,在调试模式下,项目只能识别 App 下 static 文件夹下的静态文件。

由于资源路由 STATIC_URL 的限制,实际开发过程中,其他目录的资源文件没法访问。

STATICFILES_DIRS,即资源集合

可以在 settings.py 文件内自定义静态资源文件夹列表,这些列表目录下的静态文件都可以访问到。

# settings.py
# 静态资源集合
# 加入项目根目录下的static文件夹
# App下自定义的静态资源文件夹
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),
                    os.path.join(BASE_DIR, 'secondapp/static1')]

# 三个静态文件目录下的静态文件都可以访问
# http://127.0.0.1:8000/static/1.png

STATICFILES_ROOT,即资源部署

STATICFILES_ROOT 主要收集整个项目的静态资源,然后放在一个新的文件夹内。

在项目开发阶段,Django 自动提供静态文件的代理服务,无需指定显式指定 STATICFILES_ROOT。

需要注意的是,在项目上线的时候,必须要配置 STATICFILES_ROOT,然后执行 collectstatic 指令,实现服务器和项目之间的映射

# settings.py
## 资源部署
STATIC_ROOT = os.path.join(BASE_DIR, 'static_root')

# 把静态文件收集到 STATIC_ROOT中。
# python3 manage.py collectstatic

最后,通过 http://127.0.0.1:8000/static/3.png 即可以访问到媒体文件。

4. 媒体资源配置

除了静态资源,还有一些经常变动的资源,通常需要放置到媒体资源文件夹内,比如:用户头像。

媒体资源配置属性有 2 种,分别是:MEDIA_URL 和 MEDIA_ROOT

其中,MEDIA_URL 作用是配置媒体资源的路由地址,指向项目根目录下的 media 文件夹

MEDIA_ROOT 是获取 media 文件夹在当前系统的完整路径

# settings.py
# 媒体资源
# 设置媒体路由地址信息
MEDIA_URL = './media/'
# media文件夹的完整路径
MEDIA_ROOT = os.path.join(BASE_DIR, MEDIA_URL)

为了保证 Django 找到媒体文件,即:浏览器能访问 media 文件夹的文件,需要在 url.py 文件中,将 media 文件夹注册到 Django 项目路由设置文件中。

# urls.py
from django.conf import settings
from django.contrib import admin
from django.urls import path, re_path
# 将media文件夹添加路由地址
from django.views.static import serve

from secondapp.views import index

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', index),
    # 配置媒体文件夹路由地址
    re_path('media/(?P<path>.*)', serve, {'document_root': settings.MEDIA_ROOT}, name='media')
]

最后,通过 http://127.0.0.1:8000/media/4.png 即可以访问到媒体文件。

下篇文章将继续聊模板、数据库、中间件等配置的内容。

留言送书

活动介绍走心留言,直接送书
今日赠书:《Git从入门到精通》

今日留言主题

说说最近遇到的编程问题或新学的一个小技能?

THANDKS
(0)

相关推荐