Python教程之七-----编写你的第一个Django应用(6)
来源:互联网 发布:cad绘图软件中文版 编辑:程序博客网 时间:2024/05/21 21:39
这个教程紧接教程(5).我们已经建立了一个网页问卷调查应用,我们现在将添加一个样式表和一个图片。除了服务器生成的HTML外,web应用程序通常需要添加额外的文件 -- 例如图片,JavaScript,或者CSS -- 必须的用于渲染完成的网页页面。在Django中,我们将这些文件称为“静态文件”。
对于小一些的项目,这不是什么大问题,因为你可以将静态文件放在你web服务器能找到的地方。然后,在大的项目中,尤其是由多个应用组成的 -- 处理多个由每个应用提供的静态文件集开始变得棘手。
那就是django.contrib.staticfiles的目的:它从每个你的应用中搜集静态文件(和你指定的任何地方)到一个可以很容易在生产中服务的地址。
1. 定制你应用的外观和感觉
首先,在你的polls路径下创建一个目录名为static。Django将会在那里寻找静态文件,和Django如何在polls/templates/中找到模板相似。
Django的STATICFILES_FINDERS设置包含了发现者的列表,它知道如何去从可变的源中发现静态文件。默认中的一个是AppDerectoriesFinder,它在每个INSTALLED_APPS寻找“static”子目录,就像我们刚刚在polls中创建的那个。管理站点为它的静态文件使用相同的目录结构。
在你刚刚创建的static路径下,创建另一个目录名为polls,并且在那里面创建一个文件称为style.css。换句话说,你的
样式表应该在polls/static/polls/style.css。因为AppDirectoriesFinder静态文件查找器的工作方式,你可以在Django中用polls/style.css来引用这个静态文件,和引用你模板的路径相似。
静态文件命名空间
就像模板一样,我们可以直接将静态文件放在polls/static中(而不是创建另外一个polls的子路径),但它却是是一个坏的想法。Django将会选择它找到的名字匹配的第一个静态文件,并且如果你在不同的应用中有一个相同名字的静态文件,Django将不能分辨它们。我们需要为Django指定正确的那个,最简单的方式来确保这个就是使用命名空间。那就是说,将这个静态文件放到另一个和应用程序名称仙童的路径中。
将下列代码放在样式表中(polls/static/polls/style.css):
polls/static/polls/style.cssli a { color: green;}
下一步,在polls/templates/polls/index.html的最上方添加下列代码:
polls/templates/polls/index.html{% load static %}<link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}" />
{% static %}模板标签产生静态文件的绝对URL。
那就是为了你开发需要做的。重载http://localhost:8000/polls/你将会看到questions的链接都是绿色的(Django的风格!),这意味着你的样式表被正确的加载了。
2. 添加背景图片
下一步,我们将创建一个存放图片的子路径。在polls/static/polls/路径下创建一个images子路径。在这个路径里,放一张称为background.gif的图片。换句话说,将你的图片放在polls/static/polls/images/background.gif。
然后,添加到你的样式表中(polls/static/polls/style.css):
polls/static/polls/style.cssbody { background: white url("images/background.gif") no-repeat right bottom;}
重新加载http://localhost:8000/polls/你将会看到加载在屏幕右下角的背景图片。
警告
当然{% static %}模板标签不能用在像你的样式表这样的静态文件中,因为他们不是Django生成的。你应该总是使用相对路径来链接你的静态文件,因为你可以修改STATIC_URL(被static模板标签用于生成它的URLs)而不用修改在你静态文件中的大量的路径。
这些是基础。有关设置和框架中包含其他部分的详细信息请阅读<静态文件操作方式>和<静态文件指引>。<部署静态文件>讨论如何使用静态文件在一个真正的服务器上。
- Python教程之七-----编写你的第一个Django应用(6)
- Python教程之六-----编写你的第一个Django应用(4)
- Django教程之三-----编写你的第一个Django 应用(1)
- Django教程之四-----编写你的第一个Django应用(2)
- Django教程之五-----编写你的第一个Django应用(3)
- Django教程之六-----编写你的第一个Django应用(5)
- Django教程之八-----编写你的第一个Django应用(7)
- 编写你的第一个Django应用
- 编写你的第一个Django应用, 第一部分
- Django基础(2)编写你的第一个Django应用
- 编写你的第一个Django应用01
- 编写你的第一个Django应用, 第二部分
- 编写你的第一个Django应用, 第三部分
- Django官方教程(七)【创建你的第一个 Django 项目,第五部分】
- Django官方教程(十二)【编写你的第一个 Django 补丁】
- django 1.8 官方文档翻译: 1-2-6 编写你的第一个Django应用,第6部分
- 初始django笔记之编写第一个django应用
- django 1.8 官方文档翻译: 1-2-1 编写你的第一个Django应用,第1部分
- 最大访问
- MiniGui Samples运行效果
- Servlet 实例创建
- 复习:css3核心属性——选择器、盒子模型、多列布局、响应式布局、动画特效
- tp5上传图片并生成缩略图
- Python教程之七-----编写你的第一个Django应用(6)
- B树、B-树、B+树、B*树
- JAVA中函数
- oracle的分页查询
- Oracle数据库基础
- 输入某年某月某日,判断这一天是这一年的第几天?
- Run-Time Check Failure #2
- 采用mustache语言作为elasticsearch搜索请求的预处理模板
- 在eclipse如何设置新建JSP文件的默认字符编码为UTF-8?