首页 > 其他分享 >Django-5.1静态文件-笔记

Django-5.1静态文件-笔记

时间:2022-11-29 15:00:30浏览次数:52  
标签:5.1 文件 静态 笔记 Django html static test booktest

静态文件

项目中的CSS、图片、js都是静态文件。一般会将静态文件放到一个单独的目录中,以方便管理。在html页面中调用时,也需要指定静态文件的路径,Django中提供了一种解析的方式配置静态文件路径。静态文件可以放在项目根目录下,也可以放在应用的目录下,由于有些静态文件在项目中是通用的,所以推荐放在项目的根目录下,方便管理。

示例

1)在test5/settings.py文件中定义静态文件存放的物理目录。

STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]

2)在项目根目录下创建static目录,再创建img、css、js目录。

3)在booktest/views.py中定义视图static_test。

def static_test(request):
return render(request,'booktest/static_test.html')

4)在booktest/urls.py中配置url。

url(r'^static_test/$',views.static_test),

5)在templates/booktest/下创建static_test.html文件。

<html>
<head>
<title>静态文件</title>
</head>
<body>
<img src="/static/img/sg.png"/>
</body>
</html>

6)保存图片到static/img/目录下,名称为sg.png。

7)运行服务器,浏览效果如下图:

Django-5.1静态文件-笔记_django

配置静态文件

Django提供了一种配置,可以在html页面中可以隐藏真实路径。

1)在test5/settings.py文件中修改STATIC_URL项。

# STATIC_URL = '/static/'
STATIC_URL = '/abc/'

2)刷新浏览器,图片找不到了,效果如下图:

Django-5.1静态文件-笔记_静态文件_02

3)修改templates/booktest/static_test.html如下:

<html>
<head>
<title>静态文件</title>
</head>
<body>
修改前:<img src="/static/img/sg.png"/>
<hr>
修改后:<img src="/abc/img/sg.png"/>
</body>
</html>

3)刷新浏览器,效果如下图:

Django-5.1静态文件-笔记_django_03

4)查看网页源代码,发现可以网址和真实地址之间没有关系。

Django-5.1静态文件-笔记_django_04

为了安全可以通过配置项隐藏真实图片路径,在模板中写成固定路径,后期维护太麻烦,可以使用static标签,根据配置项生成静态文件路径。

1)修改templates/booktest/static_test.html如下:

<html>
<head>
<title>静态文件</title>
</head>
<body>
修改前:<img src="/static/img/sg.png"/>
<hr>
修改后:<img src="/abc/img/sg.png"/>
<hr>
动态配置:
{%load static from staticfiles%}
<img src="{%static "img/sg.png" %}"/>
</body>
</html>

2)刷新浏览器,效果如下图:

Django-5.1静态文件-笔记_静态文件_05

查看网页源代码如下图:

Django-5.1静态文件-笔记_django_06

说明:这种方案可以隐藏真实的静态文件路径,但是结合Nginx布署时,会将所有的静态文件都交给Nginx处理,而不用转到Django部分,所以这项配置就无效了。

标签:5.1,文件,静态,笔记,Django,html,static,test,booktest
From: https://blog.51cto.com/chen8866/5895132

相关文章

  • Django-4.4CSRF跨站请求伪造-笔记
    CSRFCSRF全拼为CrossSiteRequestForgery,译为跨站请求伪造。CSRF指攻(敏感词)击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取......
  • Django-4.5验证码-笔记
    验证码在用户注册、登录页面,为了防止暴力请求,可以加入验证码功能,如果验证码错误,则不需要继续处理,可以减轻业务服务器、数据库服务器的压力。手动实现验证码接下来的代码不要......
  • JS基础笔记合集(1-3)
    JavaScript合集1.JS入门基础2.JS数据类型3.JS运算符4.JS流程控制5.JS对象6.JS函数7.JS面向对象8.JS数组9.JS内置对象我追求理解,以理解为主,开心的学习Ja......
  • 《Go 语言并发之道》读书笔记(七)
    今天这篇笔记我们来学习Go限流限流是分布式系统中经常需要用到的技术,因为我们让请求没有限制,很容易就出现某个用户开很多线程把我们的服务拉跨,进而影响到别的用户。限流......
  • Django-3.1URLconf-笔记
    URLconf用户通过在浏览器的地址栏中输入网址请求网站,对于Django开发的网站,由哪一个视图进行处理请求,是由url匹配找到的。配置1)在test3/settings.py中通过ROOT_URLCONF指定ur......
  • Django-3.2视图-笔记
    视图视图就是python中的函数,视图一般被定义在"应用/views.py"文件中,此例中为"booktest/views.py"文件。视图必须返回一个HttpResponse对象或子对象作为响应。响应可以是一张......
  • 【小源笔记】第五期 | 如何将应用内置到OpenHarmony系统中
    1.查看hap包签名对应的.cer文件所在路径2.使用keytool工具打印对应的证书指纹(使用keytool前需配置java环境)keytool-printcert-file<.cer文件所在路径>生成多少个证......
  • Django-2.5关联-笔记
    模型类关系关系字段类型关系型数据库的关系包括三种类型:ForeignKey:一对多,将字段定义在多的一端中。ManyToManyField:多对多,将字段定义在任意一端中。OneToOneField:一对一,将字......
  • 重构:改善既有代码的设计 第六章 读书笔记
    第6章第一组重构6.1提炼函数(ExtractFunction)抽取函数;6.2内联函数(InlineFunction)和提炼函数相反操作;6.3提炼变量(ExtractVariable)动机:表达式有......
  • Django-2.1内容复习-笔记
    定义模型类模型类被定义在"应用/models.py"文件中,此例中为"booktest/models.py"文件。模型类必须继承自Model类,位于包django.db.models中。提示:对于重要数据使用逻辑删除。......