settings.py 静态文件相关配置如下
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.2/howto/static-files/STATIC_URL = '/static/'
STATIC_DIRS = (os.path.join(BASE_DIR, 'static'),)
问题描述
[13/Jul/2023 16:15:44] "GET /static/image/cat.jpg HTTP/1.1" 404 1798
解决方法
对于windows增加配置STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'), )
配置完后setting.py相应部分具体如下:
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.2/howto/static-files/STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'), ) # Used for windows static files.
STATIC_DIRS = (os.path.join(BASE_DIR, 'static'),)
扩充:
STATIC_URL = '/static/' 该/static/为浏览器地址栏里http://127.0.0.1:8000/static/image/cat.jpg的static
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'), )
STATIC_DIRS = (os.path.join(BASE_DIR, 'static'),)
里的static为项目文件目录里的static,具体如下:
PS E:\code\xxx\xxx\portrait\static\image> ls
目录: E:\code\xxx\xxx\portrait\static\image
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2023/7/13 15:55 95727 cat.jpg
PS E:\code\xxx\xxx\portrait\static\image>
所以对于模板里的img标签url,<img src="http://127.0.0.1:8000/static/image/cat.jpg" width="200px" height="200px">
前半部分为settings.py里STATIC_URL确定,后半部分为settings.py里STATICFILES_DIRS和STATIC_DIRS来关联本地路径。
另外如果不能访问静态文件出现5xx时记得检查本地地址在settings.py的ALLOWED_HOSTS里。
ALLOWED_HOSTS = ['123.123.123.123', '127.0.0.1']