问题描述
我是django的初学者,我刚刚开始学习如何加载静态文件以及有关静态文件的所有知识。在设置完整的代码后,我运行服务器时遇到此错误:
"""
Django settings for project3 project.
Generated by 'django-admin startproject' using Django 3.1.1.
For more information on this file,see
https://docs.djangoproject.com/en/3.1/topics/settings/
For the full list of settings and their values,see
https://docs.djangoproject.com/en/3.1/ref/settings/
"""
from pathlib import Path
import os
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
TEMPLATE_Dirs = [os.path.join(BASE_DIR / 'templates'),]
STATIC_Dirs = [os.path.join(BASE_DIR / 'static'),]
# Application deFinition
INSTALLED_APPS = [
'django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','course','fees',]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates','Dirs': TEMPLATE_Dirs,'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',],},]
# Static files (CSS,JavaScript,Images)
# https://docs.djangoproject.com/en/3.1/howto/static-files/
STATIC_URL = '/static/'
STATICFILES_Dirs = [STATIC_Dirs,]
这里是setting.py文件
SELECT
解决方法
Django 3.1不再使用os
来联接settings.py
中的路径。它使用pathlib,它提供了Path
对象...
BASE_DIR = Path(__file__).resolve().parent.parent
然后只能用斜杠将其连接:
TEMPLATE_DIRS = [BASE_DIR / 'templates',]
STATIC_DIRS = [BASE_DIR / 'static',]
那么根本不需要import os
...
我很奇怪,finders.py
中的代码期望使用/
连接pathlib的2个部分,然后使用os.join
以某种方式将其合并,将其减少到一个var,因此缺少值。最后一点不过是一种猜测-我还没有测试那到底是怎么回事。但是请按照我的建议修复您的代码,我认为它会起作用。
这就是我在当前项目的3.1版本中配置内容的方式
TEMPLATE_DIR = BASE_DIR / "templates"
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates","DIRS": [
TEMPLATE_DIR,],...
}
...
STATIC_URL = "/static/"
STATICFILES_DIRS = (BASE_DIR / "static",)
,
prefix,root = root
将其更改为
prefix = root
或
prefix,root = root,root