<博客建立历程>阿里云建站7——进行一些优化
目录:
页面美化
重新写一个html页面blog_base.html
[root@why templates]# mv blog_base.html.old blog_base.html.old.green
[root@why templates]# vi blog_base.html
[root@why templates]# cat blog_base.html
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> #证明是响应式
<meta name="description" content="show a blog">
<title>Blog – Layout Exapmles – Pure</title> #标签页内容
<link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.5.0/pure-min.css">
<link rel="stylesheet" href="http://picturebag.qiniudn.com/blog.css">
<link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.5.0/grids-responsive-min.css">
<div id="layout" class="pure-g"> #栅格
<div class="sidebar pure-u-1 pure-u-md-1-4">
#栅格的四分之一
<div class="header">
<h1 class="brand-title">WHY's Blog</h1>
<h2 class="brand-tagline">精通各大语言的Hello World!</h2>
<nav class="nav">
<ul class="nav-list">
<li class="nav-item">
<a class="pure-button" href="/blog">Blog</a>
</li>
<li class="nav-item">
<a class="pure-button" href="#">Tag</a>
</li>
<li class="nav-item">
<a class="pure-button" href="#">Post</a>
</li>
<li class="nav-item">
<a class="pure-button" href="#">About</a>
</li>
</ul>
</nav>
</div>
</div>
<div class="content pure-u-1 pure-u-md-3-4">
<div>
</div>
{% block content %}
{% endblock %}
</div>
</div>
</body>
</html>
效果图
BLOG也能连接到制定的/blog的url地址, 这样一次性把内容显示出来也不好,最好还是显示个摘要。
同步修改到每个blog展示的html
[root@why templates]# cat !$
cat blog.html
{% extends "blog_base.html" %}
{% block content %}
{% for blogs in blog_list %}
<h2><a href="/blog/{{blogs.id}}">{{ blogs.title }}</a></h2>
<p>{{ blogs.family }}</p>
<p>{{ blogs.timestamp | date }}</p>
<p>{{ blogs.body | truncatewords_html:"10" }}</p>
{% endfor%}
{% endblock %}
这样每个页面也是这样的效果图
字体方面优化
修改blog.html
{% extends "blog_base.html" %}
{% block content %}
{% for blogs in blog_list %}
<h2><a href="/blog/{{blogs.id}}">{{ blogs.title }}</a></h2>
分类:<a>{{ blogs.family }}</a>  # 个 是连着的意思
时间:<a>{{ blogs.timestamp | date }}</a>
<p>{{ blogs.body | truncatewords_html:"10" }}</p>
{% endfor%}
{% endblock %}
效果图
单个博客页的模板里边也这么改即可。
[root@why templates]# cat blog_every.html
{% extends "blog_base.html" %}
{% block content %}
<h1><a>{{ blog_list_two.title }}</a></h1>
分类:<a>{{ blog_list_two.family }}</a>
时间:<a>{{ blog_list_two.timestamp | date}}</a>
<p>{{ blog_list_two.body }}</p>
<h2><a href="/blog">返回</a></h2>
{% endblock %}
效果图
这个在blog_base中修改了一下,就不描述了。
分类标签页
1.在views中添加
from blog.models import Family
def blog_tag(request):
blog_list_tag = Family.objects.all()
return render(request, 'blog_tag.html',{'blog_list_tag':blog_list_tag} )
2.urls中添加
url(r'^tag/', views.blog_tag, name='tag'),
3.创建 blog_every.html
{% extends "blog_base.html" %}
{% block content %}
{% for blogs in blog_list_tag %}
<h1><a href="/blog/tag{{blogs.id}}">{{ blogs.family_name }}</a></h1>
<p>{{ blogs.body | truncatewords_html:"10" }}</p>
{% endfor%}
{% endblock %}
效果图
我们只进行了三个步骤,一个是url的添加,一个是创建展现的html,一个是创建数据提供的视图。
分类标签对应
现在要让每一个分类对应一个页面,页面中有该类的所有博客。 1.urls中添加
url(r'^tag(?P<blog_tag>[0-9])/$', views.blog_bond_tag, name='blog_tag'),
2.views中添加
def blog_bond_tag(request,blog_tag=''):
blog_list_tag_two = BlogPost.objects.filter(family_id=blog_tag)
#一定要用filter,这是一对多的关系,另外数据库中没有family_name,存储的是Family中对应的family_id.
return render(request,'blog_every_tag.html',{'blog_list_tag_two':blog_list_tag_two})
一定要用filter,这是一个一对多的关系,用get会出错 有两个的时候报
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/lib64/python2.6/site-packages/django/db/models/manager.py", line 151, in get
return self.get_queryset().get(*args, **kwargs)
File "/usr/lib64/python2.6/site-packages/django/db/models/query.py", line 310, in get
(self.model._meta.object_name, num))
MultipleObjectsReturned: get() returned more than one BlogPost -- it returned 2!
创建blog_every_tag.html
[root@why templates]# cat blog_every_tag.html
{% extends "blog_base.html" %}
{% block content %}
{% for blogs in blog_list_tag_two %}
<h1><a href="/blog/{{blogs.id}}">{{ blogs.title }}</a></h1>
分类:<a>{{ blogs.family }}</a> 
时间:<a>{{ blogs.timestamp | date }}</a>
<p>{{ blogs.body | truncatewords_html:"10" }}</p>
{% endfor %}
{% endblock %}
效果图
修改标签页显示
标签页显示的字中的<title>
实现的
<title>why's blog</title>
效果图
时区优化
admin中时间和系统时间差了8个小时,为格林治时间。
我在测试datetime.now()获取的时间确实为本地时间,所以问题应该出在Django上。
然后发现setting.py文件中果然有这个属性。
# system time zone.
TIME_ZONE = 'UTC'
改为
TIME_ZONE = 'Asia/Shanghai'
不过在windows下,TIME_ZONE是忽略不计的。
参考博客
https://my.oschina.net/hding/blog/