当前位置: 首页 > 后端技术 > Python

django中如何分离媒体、静态文件和网页

时间:2023-03-25 23:26:25 Python

在django项目中,静态文件、媒体文件和html代码占据了很大的体积,那我们如何将它们分开,以便我们和服务端方便的管理和使用。staticfilestatic,顾名思义就是静态文件,django自带命令提取项目中的所有静态文件python3manage.pycollectstatic我习惯把这些可以从外部导入的文件放在根目录下项目的DemoProject--DemoProject--DemoApp--static--manage.py对,就是这样。但在此之前,我们需要在项目的setting.py中设置提取文件的存放位置STATIC_ROOTSTATIC_ROOT=os.path.join(BASE_DIR,"static")然后,运行上面的命令后,我们会发现有在我们的项目结构中会多一个静态文件然后在DemoProject下配置url,添加fromdjango.contrib.staticfiles.urlsimportstaticfiles_urlpatternsfromdjango.conf.urls.staticimportstaticfromdjango.confimportsettingsurlpatterns=[url(r'^admin/',admin.site.urls),]ifsettings.DEBUGorTrue:urlpatterns+=staticfiles_urlpatterns()当然这个if判断是在debug为true的时候支持这样访问,如果需要修改覆盖判断在真正的生产环境,不过这里还没有结束,为了方便参考,我们还需要添加STATICFILES_DIRS=[('bootstrap',os.path.join(BASE_DIR,'static/bootstrap').replace('\\','/')),]注意这个方法在html中可以直接访问如下注意第一行要加上{%loadstaticfiles%}mediafiles网站上总是有音乐视频或者图片等大文件,所以我们把这些从django项目中分离出来调用。首先我们在static同目录新建media文件夹,在media新建image作为我们存放图片的文件夹结构:DemoProject--DemoProject--DemoApp--static--media--image--manage.py第一步:在setting.py的最后添加MEDIA_URL='/media/'MEDIA_ROOT=os.path.join(BASE_DIR,"media")第二部分:在urls.py中,在下面添加urlpatterns+=staticfiles_urlpatterns()urlpatterns+=static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)你可能不信,其实没关系这样就可以访问图片了或者我们的media/image模板下的视频如果我们要对项目中的网页代码文件进行分类分离第一步:TEMPLATES=[{'BACKEND':'django.template.backends.django.DjangoTemplates','DIRS':[os.path.join(BASE_DIR,'templates').replace('\\','/'),],'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',],},},]在上面代码的DIRS中添加你的网页代码的路径,如果你想放到root和我一样路径可以和我的一样,请关注我公众号