django项目中settings.py文件的配置

本片文章是根据上篇文章https://blog.youkuaiyun.com/Jump_Monkey/article/details/107211001
创建的HelloWord项目为依据。

1、在HelloWord工程项目中手工创建一个文件名为static(放置一些静态文件)
在setting.py中找到STATIC_URL配置如下:

STATIC_URL = '/static/'
STATICFILES_DIRS = (
  os.path.join(BASE_DIR,"static"),
)

2、创建一个app:

python3 manage.py startapp firstapp

在setting.py中,将 ALLOWED_HOSTS = [] 改为 ALLOWED_HOSTS = [’*’]

3、添加APP包名(项目名称)
在setting.py中找到INSTALLED_APPS添加app的包名(app也就是第二步创建的)

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'firstapp',            #新添加的APP名(项目名称)
]

4.templates文件夹下边主要是写前端页面(在app下创建一个文件夹templates)。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, "templates"), ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

5、设置禁止CSRF校验
在setting.py中配置:设置禁止CSRF校验(注释掉

django.middleware.csrf.CsrfViewMiddleware')
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    #'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

6.将django项目中默认的sqlite3换成mysql:(当然你也可以不换)

DATABASES = {
    # 'default': {
    #     'ENGINE': 'django.db.backends.sqlite3',
    #     'NAME': os.path.join(BASE_DIR, 'mysqls.db'),
    # }
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '',#数据库的名字
        'USER':'root',
        'PASSWORD':'', #数据库的密码
        'HOST':'localhost',
        'PORT':'3306',
    }
}
<think>好的,用户想了解如何在Django项目settings.py文件中正确配置STATIC_ROOT。首先,我需要回顾一下Django中静态文件处理的相关知识,特别是STATIC_ROOT的作用以及配置步骤。 根据引用[1],STATIC_ROOT和STATICFILES_DIRS都是用来处理静态文件配置。STATIC_ROOT指定了收集静态文件的目标目录,而STATICFILES_DIRS告诉Django去哪里寻找静态文件。用户可能混淆了这两者的用途,需要明确区分。 接下来,配置STATIC_ROOT的具体步骤应该包括在settings.py中设置路径,运行collectstatic命令,以及配置URL。引用[1]和[3]中的urls.py配置示例显示,需要通过视图函数serve来处理静态文件的请求,同时引用STATIC_ROOT作为document_root。因此,用户需要在urls.py中添加相应的路由,并确保导入了settings和相关的视图模块。 需要注意,开发环境和生产环境的配置可能不同。在开发阶段,使用Django自带的服务器处理静态文件可能可行,但生产环境通常需要Web服务器(如Nginx)来处理,这时候STATIC_ROOT就非常重要了。用户可能想知道在不同环境下的差异,所以需要提及这一点。 此外,常见的错误可能包括路径设置不正确,导致collectstatic无法正确收集文件,或者urls.py中的路由配置错误。需要提醒用户检查路径是否正确,并确保运行了collectstatic命令。引用[2]提到INSTALLED_APPS需要包含'django.contrib.staticfiles',这也是必须确认的一点,否则静态文件功能无法启用。 最后,生成相关问题时要围绕STATIC_ROOT的配置、相关配置项的区别、常见问题以及生产环境部署等方面,帮助用户进一步理解整个静态文件处理流程。</think>### 如何在 Django settings.py配置 STATIC_ROOT #### 1. **理解 STATIC_ROOT 的作用** - **STATIC_ROOT** 是 Django 项目在生产环境中收集所有静态文件(CSS、JS、图片等)的集中存储目录,通常在部署时通过 `python manage.py collectstatic` 命令自动生成[^1][^2]。 - 与 **STATICFILES_DIRS** 的区别:`STATICFILES_DIRS` 是开发阶段指定多个静态文件源目录的配置,而 `STATIC_ROOT` 是最终聚合这些文件的目录。 --- #### 2. **配置步骤** ##### (1) 在 `settings.py` 中设置路径 ```python # settings.py STATIC_URL = '/static/' # 静态文件访问 URL 前缀(必须配置) STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') # 指定收集静态文件的目标目录 ``` ##### (2) 运行收集命令 在终端执行: ```bash python manage.py collectstatic ``` Django 会将所有应用的 `static/` 目录和 `STATICFILES_DIRS` 中指定的文件复制到 `STATIC_ROOT` 目录。 ##### (3) 生产环境配置(示例) 在 `urls.py` 中添加静态文件路由(仅限开发环境调试,生产环境应由 Web 服务器处理): ```python # urls.py from django.conf import settings from django.urls import re_path from django.views import static urlpatterns += [ re_path(r'^static/(?P<path>.*)$', static.serve, {'document_root': settings.STATIC_ROOT}), ] ``` 引用自静态文件服务配置示例[^3]。 --- #### 3. **注意事项** - **开发环境**:Django 默认会自动处理 `STATICFILES_DIRS` 中的文件,无需配置 `STATIC_ROOT`。 - **生产环境**:必须通过 Web 服务器(如 Nginx)直接托管 `STATIC_ROOT` 目录,而非依赖 Django 视图。 - **路径一致性**:确保 `STATIC_ROOT` 目录不会被版本控制工具(如 Git)跟踪,避免与开发文件冲突。 --- #### 4. **完整配置示例** ```python # settings.py BASE_DIR = Path(__file__).resolve().parent.parent STATIC_URL = '/static/' STATIC_ROOT = BASE_DIR / 'staticfiles' # 使用 Pathlib 语法 STATICFILES_DIRS = [ BASE_DIR / 'myapp/static', # 自定义静态文件目录 ] ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值