django开发简易博客(三)
一.静态文件的使用
首先,新建static目录,目录下分别建立css、js、img三个子目录
修改settings.py文件
STATICFILES_DIRS = (
'F:/web/static', #替换成自己的static 目录
)
修改web下的urls.py,添加以下内容
urlpatterns += patterns((''),
(r'^static/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': 'F:/web/static'}
),
)
二.使用bootstrap美化界面
下载boostrap组件,将相应文件放到static目录中。然后修改base.html。在head中添加
<link rel="stylesheet" href="/static/css/bootstrap.min.css">
<script src="/static/js/jquery-2.0.0.min.js"></script>
<script src="/static/js/bootstrap.min.js"></script>
重写base.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="/static/css/bootstrap.min.css">
<script src="/static/js/jquery-2.0.0.min.js"></script>
<script src="/static/js/bootstrap.min.js"></script>
<title>
{% block title %}
{% endblock %}
</title>
{% block extra_head %}
{% endblock %}
</head>
<body>
{% block body %}
{% block header %}
{% block menu %}
{% endblock %}
{% endblock %}
<div class="container main">
{% block content %}
<div class="container">
<div class="row">
<div class="col-md-9">
{% block article %}
{% block article_title %}{% endblock %}
{% block article_content %}{% endblock %}
{% endblock %} {% block article_menu %} {% endblock %}
{% block comments %} {% endblock %}
</div>
<div class="col-md-3">
{% block aside %}
{% block tags %}{% endblock %}
{% endblock %}
</div>
</div>
</div>
{% endblock %}
{% block footer %}
<p>Thanks for visiting my site! </p>
{% endblock %}
{% endblock %}
</div>
</body>
</html>
创建新文件blog_base.html,在其中添加导航栏
{% extends "base.html" %}
{% block header %}
{% block menu %}
<div class="container">
<nav class="navbar navbar-default navbar-inverse">
<div class="navbar-header">
<a href="{% url 'bloglist' %}" class="navbar-brand active">首页</a>
</div>
<div>
<ul class="nav navbar-nav">
<li><a href="#">Pyhton</a></li>
<li><a href="#">Django</a></li>
<li><a href="#">Html</a></li>
<li><a href="#">CSS</a></li>
<li><a href="#">Bootstrap</a></li>
<li><a href="#">JavaScript</a></li>
<li><a href="#">jQuery</a></li>
<li><a href="#">Linux</a></li>
<li><a href="#">关于</a></li>
<li><a href="#">联系</a></li>
</ul>
</div>
</nav>
</div>
{% endblock %}
{% endblock %}
在blog的urls.py文件中添加
url(r'^blog/tag/(?P<id>\d+)/$','blog_filter',name='filterblog'),
在views.py中添加
def blog_filter(request,id=''):
tags = Tag.objects.all()
tag = Tag.objects.get(id=id)
blogs = tag.blog_set.all()
return render_to_response("blog_filter.html",{"blogs":blogs,"tag":tag,"tags":tags})
添加blog_filter.html文件
{% extends "base.html" %}
{% block title %} 标签: {{ tag.tag_name }} {% endblock %}
{% block article %}
<article class='content-main'>
{% for blog in blogs %}
<h3><a href="{% url 'detailblog' blog.id %}">{{ blog.caption }}</a></h3>
<div class="row">
<div class="col-md-3">
<p class="muted">
<span class="glyphicon glyphicon-tag"></span>
<small> {{ blog.publish_time }}</small>
</p>
</div>
<div class="col-md-2 col-md-offset-7">
</div>
</div>
<hr class="soften">
{% empty %}
<p class="text-info">no result!!</p>
{% endfor %}
</article>
{% endblock %}
{% block aside %}
{% block tags %}
<div class="well">
{% for tag in tags %}
<span class="label"><a href="{% url 'filterblog' tag.id %}">{{ tag }}</a></span>
{% endfor %}
</div>
{% endblock %}
{% endblock %}
重新编辑blog_list.html
{% extends "blog_base.html" %}
{% block title %} 博文列表 {% endblock %}
{% block article %}
<article class='content'>
{% for blog in blogs %}
<h4><a href="{% url 'detailblog' blog.id %}">{{blog.caption}}</a></h4>
<p class="muted">
{% for tag in blog.tags.all %}
<span class="glyphicon glyphicon-tag"></span><small>{{tag}}</small>
{% endfor %}
</p>
<div class="row">
<div class="col-md-3">
<span class="glyphicon glyphicon-time"></span><small> {{ blog.publish_time }}</small>
</div>
<div class="col-md-2 col-md-offset-7">
</div>
</div>
<hr>
{% endfor %}
</article>
{% endblock %}
{% block aside %}
{% block tags %}
<div class="well">
{% for tag in tags %}
<span class="label"><a href="{% url 'filterblog' tag.id %}">{{tag}}</a></span>
{% endfor %}
</div>
{% endblock %}
{% endblock %}
重新编辑blog_show.html
{% extends "blog_base.html" %}
{% block title %} {{ blog.caption }} {% endblock %}
{% block article %}
<div class="content">
<article class="content-main">
{% block article_title %}
<h2>{{ blog.caption }}</h2>
{% endblock %}
<p class="muted">
<span class="glyphicon glyphicon-user"></span><small> {{ blog.author }}</small>
<span class="glyphicon glyphicon-time"></span><small> {{ blog.publish_time }}</small>
</p>
<section>
<div class="blog-content">
{% block article_content %}
{{ blog.content }}
{% endblock %}
</div>
</section>
<section>
<div class="row">
<div class="col-md-3">
<p>
<span class="glyphicon glyphicon-tag"></span>
{% for tag in blog.tags.all %}
<small class="muted"> {{ tag }} </small>
{% endfor %}
</p>
</div>
<div class="col-md-2 col-md-offset-7">
</div>
</div>
</section>
</article>
<hr>
</div>
{% endblock %}
这样,一个简单的经过bootstrap美化的blog页面就出现了,但是现在还只能展示,不能自己提交blog。
django开发简易博客(三)的更多相关文章
- django开发简易博客(一)
这几篇博客是根据GoodSpeed的博客该写的,看了他的博客收获很大,但是他的博客从第三篇开始,条理很不清晰,加之又是几年之前写的,编写环境发生很大改变,所以对他的博客进行了一个整理,加入了一些自己的 ...
- django开发简易博客(四)
上一节,我们讲述了怎么使用静态文件,并使用bootstrap对页面进行了美化,这一节我们将增强我们blog的功能,添加发表博客,删除博客的功能. 一.表单的使用 要实现添加blog的功能,就得使用表单 ...
- django 开发简易博客(二)
这一节我们来了解模板和视图.URL的使用. 一.使用模板 在blog目录中新建templates文件夹,在templates文件夹下新建base.html文件.目录结构如下 templates/ ba ...
- django开发简易博客(五)
这一节将讲述如何添加comments库与ajax的支持. 一.添加comments库 comments库是是django框架内置的一个评论库,可以快速的搭建岀一个评论系统,不过再自定义方面有些麻烦,不 ...
- Django搭建简易博客
Django简易博客,主要实现了以下功能 连接数据库 创建超级用户与后台管理 利用django-admin-bootstrap美化界面 template,view与动态URL 多说评论功能 Markd ...
- Django开发个人博客入门学习经验贴
[写在前面] 入门学习搭建个人博客系统首先还是参考大佬们的经验,记得刚入手Django的时候,一篇博客大佬说过一句话,做技术的不要一开始就扎头于细节中,先把握整体框架,了解这个对象之后再去了解细节,进 ...
- Django 搭建简易博客
新增一个 APP 博客算是一个功能集,因此我们应将其体现为一个模块.这表现在 Django 应用里则是为其创建一个 APP Package.现在让 manage.py 中的 startapp 闪亮登场 ...
- 实战Django:简易博客Part1
舍得学习新技能的时候,通常不喜欢傻读书--捧着一本阐述该项技能的书籍,然后傻看,一路看下来,脑子里塞满了新的概念.知识点,头是越来越大,但技能却几乎没掌握半分. 多年来,舍得养成了用做实例来学习新技能 ...
- Django开发简单博客流程
什么是Django? Django是一个基于python的高级web开发框架 它能够让开发人员进行高效且快速的开发 高度集成(不用自己造轮子), 免费并且开源 当前路径创建工程 django-admi ...
随机推荐
- VC++中的类的内存分布(上)(通过强制转换,观察地址,以及地址里的值来判断)
0.序 目前正在学习C++中,对于C++的类及其类的实现原理也挺感兴趣.于是打算通过观察类在内存中的分布更好地理解类的实现.因为其实类的分布是由编译器决定的,而本次试验使用的编译器为VS2015 RC ...
- elk 分布式部署
这个logstash 读取日志 是增量的 还是怎么读的? 定时每秒读增量 机器配置: elasticsearch-192.168.32.80 elasticsearch-192.168.32.81 e ...
- cocos2d-x过程动作CCProgressTo示例学习笔记
// // SpriteProgressToRadial // //------------------------------------------------------------------ ...
- #308 (div.2) A. Vanya and Table
1.题目描写叙述:点击打开链接 2.解题思路:本题是一道简单的模拟题.每次扫描一个输入的长方形,然后将内部全部点都+1,终于统计数组全部元素的和就可以. 3.代码: #define _CRT_SECU ...
- 为客户打造RAC-DG一些遇到的问题汇总
昨日有建立一个客户RAC-DG物理备用数据库,这里的一般过程中再次列举一下,为了不涉及泄露隐私.的主要参数已被替换名称.详细路径也不一致.因为环境的客户端不与本机连接的网络同意,当故障不能削减各种报警 ...
- 对JAVA Bean使用PropertyDescriptor反射调用JAVA方法
对于符合JAVA Bean规范的bean,调用其方法应优先使用java.beans.PropertyDescriptor获取Method进行方法调用,以获得更大的可维护性. 示比例如以下: NonCo ...
- HTML5API___manifest
离线缓存 manifest 在html标签里面增加个属性 mainfest 就可以告诉浏览器缓存文件在哪里. <html manifest='show.manifest' xmlns=" ...
- [LeetCode]题解(python):069-Sqrt(x)
题目来源: https://leetcode.com/problems/sqrtx/ 题意分析: 实现一个整型的开根. 题目思路: 利用牛顿迭代法可以求解.首先讲数据类型转成浮点数,然后选取初始值为n ...
- Python 安装、循环语句、数据类型(一)
一.关于版本的选择 Should i use Python 2 or Python 3 for my development activity?转载自Python官网 Short version: P ...
- 【转】context和getApplicationContext()介绍
在android中常常会遇到与context有关的内容,大多都是作为参数在传递,但是它的作用究竟是什么呢 先说它的用法,举个例子 在语句 AlertDialog.Builder builder = n ...