赞
踩
锋哥原创的Python Web开发 Django5视频教程:
2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计17条视频,包括:2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~、第2讲 Django5安装、第3讲 Django5创建项目(用命令方式)等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV14Z421z78C/资源文件配置分为静态资源和媒体资源。静态资源的配置方式由配置属性STATIC_URL、STATICFILES DIRS和STATIC_ROOT进行设置;媒体资源的配置方式由配置属性MEDIA_URL和MEDIA ROOT决定。
静态资源指的是网站中不会改变的文件。在一般的应用程序中,静态资源包括CSS文件、JavaScript文件以及图片等资源文件。
默认配置,app下的static目录为静态资源,可以直接访问。其他目录不行。
STATIC_URL = 'static/'
我们在app下新建static目录,再放一个logo.png图片。
同时在app目录下再新建一个images目录,放一个qq.jpg头像图片
最后再项目目录下新建一个static,放一个pig.jpg,也试试看是否可以访问;
http://127.0.0.1:8000/static/logo.png我们启动项目测试:
先测试app下的static目录下的logo.png,能显示没问题。
http://127.0.0.1:8000/static/logo.png
再试试app下的images目录下的qq.jpg
http://127.0.0.1:8000/static/qq.jpg
404不存在
最后再测试下项目目录下的static下的pig.jpg
http://127.0.0.1:8000/static/pig.jpg
也是404不存在。
通过测试说明,也就app下的static目录下的静态资源才能访问。
由于STATIC_URL的特殊性,在开发中会造成诸多不便,比如将静态文件夹存放在项目的根目录以及定义多个静态文件夹等。我们可以通过配置STATICFILES DIRS实现多个目录下的静态资源可以访问。
- # 设置静态资源文件集合
- STATICFILES_DIRS = [BASE_DIR / "static", BASE_DIR / "helloWorld/images"]
我们再测试下:
http://127.0.0.1:8000/static/pig.jpg
http://127.0.0.1:8000/static/qq.jpg
静态资源配置还有STATIC_ROOT,其作用是在服务器上部署项目,实现服务器和项目之间的映射。STATIC_ROOT 主要收集整个项目的静态资源并存放在一个新的文件夹,然后由该文件夹与服务器之间构建映射关系。STATIC_ROOT配置如下:
- # 静态资源部署
- STATIC_ROOT = BASE_DIR / 'static'
当项目的配置属性 DEBUG 设为True的时候,Django 会自动提供静态文件代理服务,此时整个项目处于开发阶段,因此无须使用STATIC_ROOT。当配置属性DEBUG 设为False的时候,意味着项目进入生产环境,Django不再提供静态文件代理服务,此时需要在项目的配置文件中设置STATIC_ROOT。 设置STATIC_ROOT需要使用 Django操作指令collectstatic来收集所有静态资源,这些静态资源都会保存在STATIC_ROOT所设置的文件夹里。
一般情况下,STATIC_URL是设置静态文件的路由地址,如CSS样式文件、JavaScript文件以及常用图片等。对于一些经常变动的资源,通常将其存放在媒体资源文件夹,如用户头像、歌曲文件等。
媒体资源和静态资源是可以同时存在的,而且两者可以独立运行,互不影响,而媒体资源只有配置属性MEDIA_URL和 MEDIA_ROOT。
我们在项目目录下新建media目录,里面再放一个boy.jpg图片。
然后在配置文件settings.py里设置配置属性MEDIA_URL和 MEDIA_ROOT,MEDIA_URL用于设置媒体资源的路由地址,MEDIA_ROOT用于获取 media文件夹在计算机系统的完整路径信息,如下所示:
- # 设置媒体路由
- MEDIA_URL = 'media/'
- # 设置media目录的完整路径
- MEDIA_ROOT = BASE_DIR / 'media'
配置属性设置后,还需要将media文件夹注册到 Django里,让 Django知道如何找到媒体文件,否则无法在浏览器上访问该文件夹的文件信息。打开项目文件夹的urls.py文件,为媒体文件夹media添加相应的路由地址,代码如下:
- from django.conf import settings
- from django.contrib import admin
- from django.urls import path, re_path
- from django.views.static import serve
-
- import helloWorld.views
-
- urlpatterns = [
- path('admin/', admin.site.urls),
- path('index/', helloWorld.views.index),
- # 配置媒体文件的路由地址
- re_path('media/(?P<path>.*)', serve, {'document_root': settings.MEDIA_ROOT}, name='media')
- ]
我们来测试下:
http://127.0.0.1:8000/media/boy.jpg
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。