<博客建立历程>阿里云建站7——进行一些优化

时间:Nov. 2, 2016 分类:

目录:

页面美化

重新写一个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 &ndash; Layout Exapmles &ndash; 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>&nbsp     # 个&nbsp是连着的意思
    时间:<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>&nbsp
    时间:<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/