django中引入静态资源

花了两周时间浏览了[url=http://www.djangobook.com/en/2.0/]djangobook[/url],于是抽空做个练习实践实践。
记下网页中引入项目静态资源的方法(这里只引用css)。

场景:在基础模板base.html中引入layout.css,继承base.html的网页均可引用。
1. 在项目settings中增加静态资源的路径,比如: PEOJECT_MEDIA_ROOT = 'medias',这里的路径是相对项目路径的,建议用绝对路径代替。
2. 在项目urls中添加css请求的响应路径,如:
(r'^/wchat_media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root':settings.PEOJECT_MEDIA_ROOT})
3. 在base.html中导入css,如:
<link rel="stylesheet" type="text/css" href="/project_media/layout.css"/>

OK,无须在子模块的网页和urls中再配置了,css正常工作。

这里有一个问题,假如css导入语句为:
<link rel="stylesheet" type="text/css" href="wchat_media/layout.css"/>,
同时urls配置为:
(r'^project_media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root':settings.PEOJECT_MEDIA_ROOT})
会发现有什么问题么?
当在项目中采用了urls分流的时候,比如:(r'^project/','welcome.html'),
(r'^project/app/',include('project.app.urls')),),这个时候你将遇到麻烦,原因是url匹配的顺序出现了问题。这个时候提供两种解决办法:a) 用例子的方法,将css路径改为以'/'开头,这样css请求就会变成根请求而不会加上‘project/app/’了 ; b)在每个app的urls中配置css响应路径。

看来django的url映射对于入门者来说是很‘易’犯错啊!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值