Django教程
- 关于media,static文件的动态使用和静态使用
- django配置404页面教程
- django模板常用的内置过滤器
- Jinja2配置自定义过滤器
- Django教程-定时任务crontab
- 解决uwsgi报错:No such process [core/uwsgi.c line 1693]
- 解决-doesn't declare an explicit app_label and isn't in an application in INSTALL
- Django教程-Model字段大全,选项详解
- Django教程-子应用添加后台管理
- Django教程-安装DjangoUeditor3
- Django教程-设置默认导包路径
- Django教程-Django配置redis
- Django教程-django配置mysql数据库
- Django教程-uwsgi配置详解
- 解决:Django定时器无法启动
- Django教程-Django中配置jinja2模板
- Django教程-创建一个最简单的django项目
关于Django--media,static文件夹的动态使用和静态使用
当我们刚开始使用Django的时候,会被media和static文件夹搞的团团转,下面就详解关于Django--media,static文件夹的动态使用和静态使用。
首先先搞懂关于settings.py的media和static文件夹路径问题,如下所示:
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'html/static') # 上传到的文件的目录 STATIC_URL = '/static/' MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'html/media') # 上传到的文件的目录 MEDIA_URL ='/media/' # url访问的路径
STATIC_ROOT是服务器的绝对路径,要注意BASE_DIR,可以根据自己的需求设置BASE_DIR
STATIC_URL是动态服务器使用/static/访问STATIC_ROOT目录的文件
还要在django根url设置static和media路径静态话,比如:
from django.conf.urls import url,include from django.contrib import admin from django.conf import settings from django.views.static import serve urlpatterns = [ url(r'^aaa/', admin.site.urls), url(r'^ueditor/', include('DjangoUeditor.urls')), url(r'^', include('con.urls')), url(r'^', include('ty.urls')), url(r'^', include('min.urls')), url(r'^static/(?P<path>.*)$', serve, {'document_root': settings.STATIC_ROOT}), # django动态用的 url(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}), # django动态用的 ]
配置完成后,例如动态服务器域名为api.python-china.com,那么当你使用api.python-china.com/static/aa.png,就是访问STATIC_ROOT目录的aa.png文件。
media也是同样的道理。
关于发布和编辑文章的时候,上传的图片和文件路径问题,在models.py的设置,比如:
class Contents(models.Model): title = models.CharField(max_length=200, verbose_name='标题') type = models.ForeignKey(Type, on_delete=models.CASCADE,verbose_name='栏目名称') short_title = models.CharField(max_length=100, verbose_name='简略标题') keys = models.CharField(max_length=50, verbose_name='关键字') description = models.TextField(max_length=400, verbose_name='描述') pub_date = models.DateTimeField(default=timezone.now, verbose_name='最后修改时间') is_delete = models.BooleanField(default=False, verbose_name='逻辑删除') body = UEditorField(width=1000, height=300, toolbars="full", imagePath="images/contents/", filePath="files/contents/", upload_settings={"imageMaxSize": 1204000}, settings={}, verbose_name='内容')
imagePath="images/contents/"的意思是上传到MEDIA_ROOT+images/contents/目录下,比如你的MEDIA_ROOT是/www/wwwroot/pc_django_root/html/media,那么你发布文章上传图片的路径就是/www/wwwroot/pc_django_root/html/media/images/contents/
然后根据静态和动态的配置就访问/www/wwwroot/pc_django_root/html/media/images/contents/目录下文件了。
最后修改:2021-06-30 22:01:43