文档章节

Django+SAE个人博客 六

卜星星
 卜星星
发布于 2015/10/15 14:17
字数 1503
阅读 81
收藏 2
点赞 0
评论 0

这一节来解决一些我自己的需求。

  1. http://jackerb.sinaapp.com/blog/ 这里一下子把所有博文都显示出来了,并且每个博文的全部内容也都显示出来了,这样不符合我们一般见到的样式,所以先修改博文列表显示的时候,要求只显示部分文字,就像摘要是的。如下操作:

修改templates/homepage.html中,如下所求:

{% extends "base.html" %}
{% block content %}
{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.timestamp|date }}</p>
<p>{{ post.body|truncatechars:300 }}</p>
{% endfor %}
{% endblock %}

这里是增加了truncatechars:300,也就是限制只显示300个字数。

<p>{{ post.body|truncatechars:300 }}</p>

提交修改到SAE上,再刷新页面,查看效果。


2. 每次在打开百度或者其它页面的时候,在选项卡上都会显示人家设定好的文字,比如百度是:百度一下,你就知道。

我就是想要这个效果,其实这个就是.html里那个title设置的文字。修改templates/base.html,如下:

<html>
    <style type="text/css">
        body { color: #efd; background: #453; padding: 0 5em; margin: 0 }
        h1 { padding: 2em 1em; background: #675 }
        h2 { color: #bf8; border-top: 1px dotted #fff; margin-top: 2em }
        p { margin: 1em 0 }
    </style>
    <head>
        <title>全栈之路</title>
    </head>
    <body>
        <h1>全栈之路</h1>
        {% block content %}
        {% endblock %}
    </body>
</html>

这样在选项卡上就显示:全栈之路。


3. 之前用过的一个地址:http://jackerb.sinaapp.com/,现在如果再点,就没有用了,会提示不行404错误,这是因为我们的url设置里没有匹配这个的了。现在我们就增加上,让这个地址和http://jackerb.sinaapp.com/blog指向都一个页面。

修改jackerb/urls.py,如下:

from django.conf.urls import patterns, include, url

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'oncedo.views.home', name='home'),
    # url(r'^jackerb/', include('jackerb.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    url(r'^admin/', include(admin.site.urls)),
    url(r'^blog/', include('jackerb.blog.urls')),
    url(r'^$', include('jackerb.blog.urls')),
)

最后一行就是新加的内容,提交修改到SAE上,这时候再访问,就可以了。

4. 现在又有一个问题,我们现在已经有了文章列表这个页面,并且可以显示部分文章内容,但是一般情况下,都是点击文章的标题,就可以进入一个显示这个文章的页面。现在我们就来增加这个功能。

(1)先来让标题变成一个超链接,修改templates/homepage.html,如下:

{% extends "base.html" %}
{% block content %}
{% for post in posts %}
<h2><a href="/blog/{{ post.id }}/">{{ post.title }}</a></h2>
<p>{{ post.timestamp|date }}</p>
<p>{{ post.body|truncatechars:300 }}</p>
{% endfor %}
{% endblock %}

上面在标题那里增加了<a>标签,并且我们每个文章我们没有设置id,但是其实已经在数据库中自动生成了,可以去数据库查看一下,所以,我们以他们的id的创建不同的链接地址,以区分不同的文章。

现在可以刷新页面,标题已经变成了超链接了,可以点击跳转,但是现在还没有设置跳转到哪,接下来就进行这一步。

(2)现在先设置一个html来显示文章的标题和内容。

在templates下增加文件content.html,并添加如下内容:

{% extends "base.html" %}
{% block content %}
<h1>{{ article.title }}</h1>
<p>{{ article.body }}</p>
{% endblock %}

这里的article就是传过来的参数,一会我们会设置,这里暂时不管,就像是上面的那个posts一样,都是我们传过来的参数。

(3)第(2)步中需要一个article的参数,现在我们就来完成这件事。

在blog/views.py中增加如下内容:

from django.template import loader, Context, RequestContext
from django.shortcuts import render_to_response, get_object_or_404
from django.http import HttpResponse
from jackerb.blog.models import Blog

def homepage(request):
    posts = Blog.objects.all()
    t = loader.get_template("homepage.html")
    c = Context({ 'posts': posts })

    return HttpResponse(t.render(c))

def content(request, id):
    article = get_object_or_404(Blog, id=id)
    return render_to_response('content.html',
            locals(),
            context_instance=RequestContext(request))

我们这里增加了一个content视图函数,生成article来传给content.html,并且这个视图函数有两个参数,其中一个是id,这就是我们第(1)步中使用过的id,根据这个id我们来查找到相应的文章,传递给content.html。

(4)现在视图有了,我们是怎么跳转到这里的呢,这就需要设置urls.py了

修改blog/urls.py,如下:

from django.conf.urls.defaults import *
from jackerb.blog.views import homepage, content

urlpatterns = patterns('',
    url(r'^$', homepage),
    url(r'^(?P<id>\d+)/$', content),
)

这里其实我不太知道是怎么个意思,我是有了需求之后上网找的办法,暂时就这样,现在就实现了我需要的功能。

点击相应文章标题,跳转到这个文章的页面。


5. 但是现在问题又来了,我原本在编辑的时候有换行,但是在显示的时候却都没有换行,所有文字都挤到了一起,现在我们就来解决这个问题。

修改templates/homepage.html

{% extends "base.html" %}
{% block content %}
{% for post in posts %}
<h2><a href="/blog/{{ post.id }}/">{{ post.title }}</a></h2>
<p>{{ post.timestamp|date }}</p>
<pre>{{ post.body|truncatechars:300 }}</pre>
{% endfor %}
{% endblock %}

这里就是把原本的<p>标签换成了<pre>标签,来显示原来的格式。现在提交到SAE上,刷新后看效果。

同样的显示文章内容也需要同样的处理,修改templates/content.html,如下:

{% extends "base.html" %}
{% block content %}
<h1>{{ article.title }}</h1>
<pre>{{ article.body }}</pre>
{% endblock %}

这里也是把<p>换成了<pre>标签。点击标题,进入文章页面就可以看到效果了。但是现在又出现一个新的问题,换行是可以了,但是只是按照原来的样式换行,原本过长的还是不自动换行,现在就来实现自动换行。

修改templates/content.html

{% extends "base.html" %}
{% block content %}
<h1>{{ article.title }}</h1>
<div><pre>{{ article.body }}</pre></div>
{% endblock %}

这里加上了<div>标签,然后再设置一下<div>的属性,修改templates/base.html,如下:

<html>
    <style type="text/css">
        body { color: #efd; background: #453; padding: 0 5em; margin: 0 }
        h1 { padding: 2em 1em; background: #675 }
        h2 { color: #bf8; border-top: 1px dotted #fff; margin-top: 2em }
        p { margin: 1em 0 }
        div { word-wrap: break-word }
    </style>
    <head>
        <title>全栈之路</title>
    </head>
    <body>
        <h1>全栈之路</h1>
        {% block content %}
        {% endblock %}
    </body>
</html>

这里增加了div的属性word-wrap: break-word来自动换行。现在提交修改,刷新页面来查看效果。


© 著作权归作者所有

共有 人打赏支持
卜星星
粉丝 25
博文 110
码字总数 68736
作品 0
海淀
程序员
Django+SAE个人博客 七

以后的博客就记录在我自己的个人博客下了,这是第七节的地址: http://jackerb.sinaapp.com/blog/7/ 扫码关注,更多惊喜

卜星星 ⋅ 2015/10/19 ⋅ 0

Django+SAE个人博客 四

参考资料:Django Web开发指南.pdf 2009年5月第1版 以下内容中,所有提到jackerb都是我自己的项目名称,所以需要根据自己的来设定。 已经有了admin后台管理了,那么,现在就增加上blog应用,...

卜星星 ⋅ 2015/10/15 ⋅ 0

Django+SAE个人博客 五

参考资料:Django Web开发指南.pdf 2009年5月第1版 以下内容中,所有提到jackerb都是我自己的项目名称,所以需要根据自己的来设定。 上节我们已经可以编辑自己的博客了,那么这一节就把我们的...

卜星星 ⋅ 2015/10/15 ⋅ 0

Django+SAE=个人博客 一

本地开发环境: 操作系统:OS X Yosemite Python版本:2.7.6 Django版本:1.5.12 远程: 使用新浪的SAE 参考资料:Django Web开发指南.pdf 2009年5月第1版,根据书中第二章完成,建议先在本地...

卜星星 ⋅ 2015/10/14 ⋅ 0

Django+SAE个人博客 九

第九节地址: http://jackerb.sinaapp.com/blog/9/ 扫码,获取更多精彩内容

卜星星 ⋅ 2015/10/19 ⋅ 0

Django+SAE个人博客 八

第八节地址: http://jackerb.sinaapp.com/blog/8/ 扫码关注,更多惊喜

卜星星 ⋅ 2015/10/19 ⋅ 0

Django+SAE个人博客 三

参考资料:Django Web开发指南.pdf 2009年5月第1版 以下内容中,所有提到jackerb都是我自己的项目名称,所以需要根据自己的来设定。 在第二节中,生成http://jackerb.sinaapp.com/admin,显示...

卜星星 ⋅ 2015/10/15 ⋅ 0

Django+SAE=个人博客 二

以下内容中,所有提到jackerb都是我自己的项目名称,所以需要根据自己的来设定。 参考资料:Django Web开发指南.pdf 2009年5月第1版 现在我们来启用Django的admin功能,并且连接上sae上的mys...

卜星星 ⋅ 2015/10/14 ⋅ 0

linux中设置静态ip

今天捣鼓了一天,终于把linux在虚拟机上设置静态ip解决了。 告诉大家一点,其实桥接并不一定要有线连接的,其实连无线就可以解决的。一开始我误解了这个,一直在纠结必须用交换机的情况下来进...

小猿有培 ⋅ 2017/05/07 ⋅ 0

linux中设置静态ip

今天捣鼓了一天,终于把linux在虚拟机上设置静态ip解决了。 告诉大家一点,其实桥接并不一定要有线连接的,其实连无线就可以解决的。一开始我误解了这个,一直在纠结必须用交换机的情况下来进...

小猿有培 ⋅ 2017/05/07 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

骰子游戏代码开源地址

因为阿里云现在服务器已经停用了,所以上面的配置已经失效。 服务端开源地址:https://gitee.com/goalya/chat4.git 客户端开源地址:https://gitee.com/goalya/client4.git 具体运行界面请参考...

算法之名 ⋅ 21分钟前 ⋅ 0

设计模式--装饰者模式

装饰者模式 定义 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。 通用类图 意图 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比...

gaob2001 ⋅ 今天 ⋅ 0

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部