设计Model(设计数据库)

  1. from django.db import models
  2.  
  3. # Create your models here.
  4.  
  5. class BlogsPost(models.Model):
  6. title =models.CharField(max_length=150) #标题
  7. body =models.TextField() ##内容
  8. timestamp = models.DateTimeField() ##时间

初始化数同步据库

  1. python manage.py makemigrations
  2. python manage.py migrate

  

创建blog的公共部分

从Django的角度看,一个页面具有三个典型的组件:

一个模板(template):模板负责把传递进来的信息显示出来。

一个视图(view):视图负责从数据库获取需要显示的信息。

一个URL模式:它负责把收到的请求和你的试图函数匹配,有时候也会向视图传递一些参数。

创建模板

index.html

  1. {% extends 'base.html' %}
  2. {# 导入母板 #}
  3. <!DOCTYPE html>
  4. <html lang="en">
  5. <head>
  6. <meta charset="UTF-8">
  7. <title>Title</title>
  8.  
  9. </head>
  10. <body>
  11. {% block content %}
  12. {# content 内容,blog_list传过来的数据 #}
  13. {% for post in blog_list %}
  14. <h2>{{ post.title }}</h2>
  15. <p>{{ post.timestamp }}</p>
  16. <p>{{ post.body }}</p>
  17. {% endfor %}
  18. {% endblock %}
  19. </body>
  20. </html>

  

创建视图函数

views.py

  1. #coding=utf-8
  2. from django.shortcuts import render
  3. from blog.models import BlogsPost
  4. from django.shortcuts import render_to_response
  5.  
  6. # Create your views here.
  7. def index(request):
  8. blog_list = BlogsPost.objects.all() #获取数据库里面所拥有BlogPost对象
  9. return render_to_response('index.html',{'blog_list':blog_list})
  10. #ender_to_response()返回一个页面(index.html),顺带把数据库中查询出来的所有博客内容(blog_list)也一并返回。

  

创建blog的URL模式    

urls.py   

  1. from app1 import views
  2. urlpatterns = [
  3. url(r'^admin/', admin.site.urls),
  4. url(r'^blog/',views.blog),
  5. ]

  

创建基础模板

templates目录里创建base.html的模板:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style type="text/css">
  7. body{color:#efd;background:#453;padding:0 5em;margin:0}
  8. h1{padding:2em 1em;background:#675}
  9. h2{color:#bf8;border-top:1px dotted #fff;margin-top:2em}
  10. p{margin:1em 0}
  11. </style>
  12. </head>
  13. <body>
  14. <h1>孙其虎blog</h1>
  15. <h3>人生苦短,我学python</h3>
  16. {% block content %}
  17. {% endblock %}
  18.  
  19. </body>
  20. </html>

  

修改index.html模板,让它引用base.html模板和它的“content”块。

  1. {% extends 'base.html' %}
  2. {# 导入母板 #}
  3. <!DOCTYPE html>
  4. <html lang="en">
  5. <head>
  6. <meta charset="UTF-8">
  7. <title>Title</title>
  8.  
  9. </head>
  10. <body>
  11. {% block content %}
  12. {# content 内容,blog_list传过来的数据 #}
  13. {% for post in blog_list %}
  14. <h2>{{ post.title }}</h2>
  15. <p>{{ post.timestamp }}</p>
  16. <p>{{ post.body }}</p>
  17. {% endfor %}
  18. {% endblock %}
  19. </body>
  20. </html>

  

blog (后续更新)的更多相关文章

  1. vue源码逐行注释分析+40多m的vue源码程序流程图思维导图 (diff部分待后续更新)

    vue源码业余时间差不多看了一年,以前在网上找帖子,发现很多帖子很零散,都是一部分一部分说,断章的很多,所以自己下定决定一行行看,经过自己坚持与努力,现在基本看完了,差ddf那部分,因为考虑到自己要换 ...

  2. visual studio 项目中使用EF创建的数据库,后续更新数据库操作(生产已经部署,不能删除数据库重新创建)

    情景:SharePoint项目(其他类型的项目道理也一样),数据库是用EF(版本:6.0.0.0)创建的,生产环境已经使用,所以后续修改数据库,只能通过更新来实现. 下面是具体的操作方式: 1.vis ...

  3. 有关项目上潜在需要的移动端GIS系统源码整理,待后续更新

    GPS Tools For Android 前言: GPS数据在做GIS开发时的一份宝贵的数据,在不侵犯他人隐私的情况下通过互联网的模式收集GPS是成本最为低廉的一种模式. 背景: 现在公司在做一个项 ...

  4. C++11 并发指南后续更新

    C++11 并发指南的第一篇是 2013 年 8 月 3 号写的,到今天(2013 年 8 月 31 号)差不多一个月了,前前后后共写了 6 章(目前共 8 篇)博客介绍 C++11 的并发编程,但还 ...

  5. KD树的极简单笔记(待后续更新)

    今天(18.5.4)室友A突然问我算法怎么入门,兴奋之下给他安利了邓公的<数据结构>,然而他接着又问我能不能两周内快速入门,毕竟打算搞Machine Learning,然后掏出手机看了下他 ...

  6. iPhone被盗后续更新二:被换机!已取机!没扣住新机!怎么找新机呢?事发半年后跟进...

    先说下情况 MEID/IMEI:3544 2706 9380 456 我的序列号:F17NL088G5MY 新的IMEI:3569 7606 5956 097 新的序列号:DNPNV69ZG5MY 我 ...

  7. iPhone被盗后续更新一:怎么找老机

    [找老机] 还是找警察给你发邮件,然后要求苹果扣机.毕竟全国所有被换机的iPhone最终都会返还到苹果上海的仓库.关键就是一定要快. 当时有群里的朋友,5S被偷,后来警察发邮件,然后苹果允许对方去具体 ...

  8. linux_基本命令使用(后续更新)

    安装文件上传下载快捷键 --> rz/sz yum -y install lrzsz 获取进程名.进程号以及用户ID netstat –nlpt 修改主机名(重启后永久生效)-->cent ...

  9. idea快捷键(后续更新)

    自动补全当前行的标点符号 ctrl + shirt + 回车 跳到下一行 shirt +回车 复制一行 crtl + d 删除一行 ctrl + y 提示报错 alt + 回车 查看当前可以产什么参数 ...

随机推荐

  1. Spring JdbcTemplate

    参考链接: https://my.oschina.net/u/437232/blog/279530 http://jinnianshilongnian.iteye.com/blog/1423897 J ...

  2. CentOS 6.7 如何启用中文输入法

    安装CentOS系统后,如何启用中文输入法呢?这个问题看起来简单,但对于Linux初学者来说,也可能不是一件容易的事.本文笔者和大家分享一下"CentOS 6.6 如何启用中文输入法&quo ...

  3. 利用Spring AOP机制拦截方法一例

    直接上代码: @Aspect // for aop @Component // for auto scan @Order(0) // execute before @Transactional pub ...

  4. 初识Spring框架实现IOC和DI(依赖注入)

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的, IoC是 ...

  5. 模拟Bootstrap响应式网格系统

    Bootstrap响应式(适应于不同的终端设备).Bootstrap栅格系统是利用百分比把视口等分为12个,然后利用媒体查询,设置float属性使之并列显示 一.媒体查询 媒体查询包含一个可选的媒体类 ...

  6. datatables中的Options总结(2)

    datatables中的Options总结(2) 五.datatable,列 columnDefs.targets 分配一个或多个列的列定义. columnDefs 设置列定义初始化属性. colum ...

  7. 《.NET开发资源大全》

    目录 API 应用框架(Application Frameworks) 应用模板(Application Templates) 人工智能(Artificial Intelligence) 程序集处理( ...

  8. CSS3写折纸

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  9. HotApp小程序统计,第一个专业的微信第三方小程序统计工具

    1.什么是HotApp小程序统计 HotApp小程序统计是第一个微信第三方小程序统计工具,就像做android 和 ios开发的人知道友盟统计一样,小程序也需要有个统计工具. 通过这个工具,可以知道小 ...

  10. ubuntu 16.04 安装nodejs

    经过几天的尝试,终于装好了: 1. nodejs官方推荐一下安装方式: NodeSource的二进制安装脚本NodeSource Using Ubuntu curl -sL https://deb.n ...