翻译于 2012/12/28 15:22
2 人 顶 此译文
This is the twelfth article in the series in which I document my experience writing web applications in Python using the Flask microframework.
The goal of the tutorial series is to develop a decently featured microblogging application that demonstrating total lack of originality I have decided to callmicroblog.
Here is an index of all the articles in the series that have been published to date:
If you have been playing with themicroblogapplication you must have noticed that we haven't spent too much time on its looks. Up to now the templates we put together were pretty basic, with absolutely no styling. This was useful, because we did not want the distraction of having to write good looking HTML when we were coding.
But we've been hard at work coding for a while now, so today we are taking a break and will see what we can do to make our application look a bit more appealing to our users.
This article is going to be different than previous ones because writing good looking HTML/CSS is a a vast topic that falls outside of the intended scope of this series. There won't be any detailed HTML or CSS, we will just discuss basic guidelines and ideas so on how to approach the task.
While we can argue that coding is hard, our pains are nothing compared to those of web designers, who have to write templates that have a nice and consistent look on a list of web browsers, most with obscure bugs or quirks. And in this modern age they not only need to make their designs look good on regular browsers but also on the resource limited browsers of tablets and smartphones.
Unfortunately, learning HTML, CSS and Javascript and on top of that being aware of the idiosyncrasies of each web browser is a task of uncertain dimensions. We really do not have time (or interest) to do that. We just want our application to look decent without having to invest a lot of energy.
So how can we approach the task of stylingmicroblogwith these constraints?
Our good friends at Twitter have released an open source web framework called Bootstrap that might be our winning ticket.
Bootstrap is a collection of CSS and Javascript utilities for the most common types of web pages. If you want to see the kind of pages that can be designed with this framework here are some examples.
These are some of the things Bootstrap is good at:
Before we can add Bootstrap to our application we have to install the Bootstrap CSS, Javascript and image files in a place where our web server can find them.
In Flask applications theapp/staticfolder is where regular files go. The web server knows to go look for files in these location when a URL has a/staticprefix.
For example, if we store a file namedimage.pngin/app/staticthen in an HTML template we can display the image with the following tag:
<img src="/static/image.png" />
We will install the Bootstrap framework according to the following structure:
/app /static /css bootstrap.min.css bootstrap-responsive.min.css /img glyphicons-halflings.png glyphicons-halflings-white.png /js bootstrap.min.js
Then in theheadsection of our base template we load the framework according to the instructions:
<!DOCTYPE html> <html lang="en"> <head> ... <link href="/static/css/bootstrap.min.css" rel="stylesheet" media="screen"> <link href="/static/css/bootstrap-responsive.css" rel="stylesheet"> <script src="http://code.jquery.com/jquery-latest.js"></script> <script src="/static/js/bootstrap.min.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"> ... </head> ... </html>
Thelinkandscripttags load the CSS and Javascript files that come with Bootstrap. Note that one of the required Javascript files is jQuery, which is used by some of the Bootstrap plugins.
Bootstrap微型博客
在我们将Bootstrap添加到我们程序中前,首先需要安装BootStrap的CSS/Javascript/图片等文件到我们Web服务器能够找到的地方.
在Flask内app/static目录就是这些文件合适的去处。服务器知道如何去找到这些文件如果它的URL包含了/Static前缀。
例如,如果我们保存一个文件名为image.png的文件到/app/static,
<img src="/static/image.png" />
我们将依据下列的结构来安装 Bootstrap 框架:
/app /static /css bootstrap.min.css bootstrap-responsive.min.css /img glyphicons-halflings.png glyphicons-halflings-white.png /js bootstrap.min.js
然后我们遵从操作指南在基础模版的<head>标签内添加如下代码:
<!DOCTYPE html> <html lang="en"> <head> ... <link href="/static/css/bootstrap.min.css" rel="stylesheet" media="screen"> <link href="/static/css/bootstrap-responsive.css" rel="stylesheet"> <script src="http://code.jquery.com/jquery-latest.js"></script> <script src="/static/js/bootstrap.min.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"> ... </head> ... </html>
<link>和<script>标签加载Bootstrap的CSS和Javascript文件。注意这里还需要的Javascript文件是jQuery,它被Bootstrap的一些插件所使用。
Themetatag enables Bootstrap's responsive mode, which scales the page appropriately for desktops, tablets and smartphones.
With these changes incorporated into ourbase.htmltemplate we are ready to start implementing Bootstrap, which simply involves changing the HTML in our templates.
The changes that we will make are:
We will not discuss the specific changes to achieve the above since these are pretty simple. For those interested, the actual changes can be viewed in diff form on this github commit. The Bootstrap reference documentation will be useful when trying to analyze the newmicroblogtemplates.
<meta>标签可以开启Bootstrap的响应式模式, 它缩放页面以适应桌面、平板和智能手机。
将这些改动添加到我们base.html模版里,我们就可以开始使用Bootstrap了,它简单地在我们的模版里做了些修改。
我们所要做的修改如下:
我们将不会讨论以上这些特殊的修改因为这些很简单。有意思的是,这些修改都可以在这个github提交用diff来查看。Bootstrap参考手册在尝试分析新的微型博客模版时会非常有用。
Today we've made the promise to not write a single line of code, and we stuck to it. All the improvements we've made were done with edits to the template files.
To give you an idea of the magnitude of the transformation, here are a few before and after screenshots. Click on the images to enlarge.
The updated application can be downloaded below:
Download microblog-0.12.zip.
In the next chapter we will look at improving the formatting of dates and times in our application. I look forward to see you then!