上一篇我们说了如何搭建简易博客网站,下面我们来进行详细解答。本文没有特定顺序,请结合上一篇和源代码参照学习。

相关源代码和解析请参看:https://github.com/Cheng0829/mysite

/mysite/manage.py(Django项目里面的工具,通过它可以调用django shell和数据库等)

/mysite/mysite/settings.py(包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量)

/mysite/mysite/urls.py(负责把URL模式映射到应用程序,通俗理解就是网址)

在blog目录下的models.py是blog应用的核心文件之一,是定义blog数据结构的地方。修改models.py,新添加BlogPost类,代码如下:

from django.db import models
class BlogPost(models.Model):
title = models.CharField(max_length = 150)(长度确定)
body = models.TextField()(长度不定,可以无限)
timestamp = models.DateTimeField()

XXXField:字段类型(Field types)

BlogPost类是django.db.models.Model的一个子类 。它有变量title(blog的标题),body(blog的内容部分),timestamp(blog的发表时间)。

CharField:
class CharField(max_length=None,[**options])

CharField是一个字符串字段,对小字符串和大字符串都适用。对于更大的文本,应该使用TextField 。

但它有一个必须传入的参数:max_length,字段的最大字符数。

DateTimeField
class DateTimeField([auto_now=False, auto_now_add=False, **options])

DateTimeField利用 datetime.datetime 实例表示日期和时间。

TextField
class TextField([**options])

TextField用于处理大文本字段,理论上可无限。

接下来,先python manage.py makemigrations(简历mysite)

然后python manage.py migrate(创建SQLite数据库,数据库迁移,migrate意为迁移)

最后在根目录mysite下生成一个数据库文件db.sqllite3。

打开mysite/mysite/urls.py,写上url(r'^admin/', admin.site.urls),使此地址可以打开admin后台

urlpatterns = [

url('admin/', admin.site.urls),

url(r'^blog/$',views.blog_index,name='index'),

]

编辑mysite/mysite/settings.py,在INSTALLED_APPS列表里面添加blog应用(列表也可以用逗号结尾)

(若需要改变时区和语言,则在107,109行改代码为

LANGUAGE_CODE = 'zh-hans'(默认为en-us),TIME_ZONE = 'Asia/Shanghai'(默认为UTC))

(在setting.py第26行有DEBUG=True,故在打开某不存在页面时,显示“Page Not Found”,而不是404)

DEBUG = True
ALLOWED_HOSTS = []

若把DEBUG变量注释掉或设为False,必须在ALLOWED_HOSTS不为空, 此时打开某不存在页面,显示Sever Error 500

404:找不到文件 500:内部服务器错误

code:代码,编码

此时输入http://127.0.0.1:8000/admin/,输入刚才创建数据库时候填写的帐号就能进入admin界面

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

1.模板(model):模板负责把传递进来的信息显示出来。

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

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

其实前面的步骤而言,我们已经是完成了model这个模块的功能了,接下来就是做好视图的映射就可以了。

下面解析index.html:

渲染变量使用双大括号{{ }},渲染标签则使用双大括号{% %}

templates中html文件的for标签:
{% for i in blog_list %} #blog_list 为后端传递给模板的变量 <p>{{ blog.XXX }}</p> #输出blog.XXX,若把p改为h2,可把把字体加粗,然后加大到2号(数字越小字越大) {% endfor %} #使用endfor来表示循环结束

接下来编写views.py:

from django.shortcuts import render
from blog.models import BlogsPost
def blog_index(request):
blog_list = BlogsPost.objects.all() # 从数据库获取所有该类对象,即获取所有数据
return render(request, 'index.html', {'blog_list':blog_list})

render方法可接收三个参数,一是request参数,二是待渲染的html模板文件,三是保存具体数据的字典参数。它的作用就是将数据填充进模板文件,最后把结果返回给浏览器。

修改mysite/mysite/urls.py:

其中,r’^blog/$’表示地址为127.0.0.1:8000/blog,views.blog_index是引用views中的blog_index函数,利用html文件,name =‘index’

说明利用的是index.html文件,urlpatterns是个列表。

mysite文件夹中核心文件是setting.py,这也是最复杂最难读懂的一个py文件,所以下一篇我们讲解setting.py。

相关源代码和解析请参看:https://github.com/Cheng0829/mysite

python关于Django搭建简单博客项目(详解一)的更多相关文章

  1. python关于Django搭建简单博客项目 详解二-setting.py

    这一篇我们来讲解setting.py,具体内容以注释形式写入到下面的setting.py代码中,篇幅所限已把官方所给英文注释删除. 全部源代码和详解请参看http://github.com/Cheng ...

  2. python关于Django搭建简单博客项目(教程)

    由于csdn各种django blog博文都有或多或少的bug,所以我决定自己写一篇,先附上教程,详解在另一篇博文里,为了便于大家复制粘贴,本文代码尽量不使用图片. 源代码及解析文章请在我的githu ...

  3. Django搭建简易博客

    Django简易博客,主要实现了以下功能 连接数据库 创建超级用户与后台管理 利用django-admin-bootstrap美化界面 template,view与动态URL 多说评论功能 Markd ...

  4. Django搭建简易博客教程(四)-Models

    原文链接: http://www.jianshu.com/p/dbc4193b4f95 Django Model 每一个Django Model都继承自django.db.models.Model 在 ...

  5. Django之BBS博客项目

    一.登陆功能(验证码) from geetest import GeetestLib from django.contrib import auth #使用极验滑动验证码的登陆 def login(r ...

  6. 用Django搭建个人博客—(1)

    业精于勤荒于嬉,形成于思毁于随. 本阶段的任务小记: 简单介绍一下Django的使用,创建项目和一个app 简单介绍一下Django的settings.py文件的相关配置 整合数据库到自己的博客系统中 ...

  7. Django 搭建简易博客

    新增一个 APP 博客算是一个功能集,因此我们应将其体现为一个模块.这表现在 Django 应用里则是为其创建一个 APP Package.现在让 manage.py 中的 startapp 闪亮登场 ...

  8. 用Django搭建个人博客—(2)

    今日任务: 1 blog的数据库模型定义 2 简单的注册登录功能的实现 项目的源文件已经推送到git@oschina.net. 所以,如果想要参阅源码的请移步 (Fork) http://git.os ...

  9. Django开发简单博客流程

    什么是Django? Django是一个基于python的高级web开发框架 它能够让开发人员进行高效且快速的开发 高度集成(不用自己造轮子), 免费并且开源 当前路径创建工程 django-admi ...

随机推荐

  1. 完整代码:安卓小软件“CSV联系人导入导出工具”

    完整代码:安卓小软件"CSV联系人导入导出工具" 开发了一个安卓小软件"CSV联系人导入导出工具",欢迎测试.本软件可以帮你快速备份和恢复联系人,不用担心号码遗 ...

  2. 倒计时0日!Apache DolphineScheduler4月 Meetup 大佬手把手教你大数据开发,离线调度

    随着互联网技术和信息技术的发展,信息的数据化产生了许多无法用常规工具量化.处理和捕捉的数字信息.面对多元的数据类型,海量的信息价值,如何有效地对大数据进行挖掘分析,对大数据工作流进行调度,是保障企业大 ...

  3. 如何在CDH5上部署Dolphin Scheduler 1.3.1

    点击蓝色字关注! 本篇文章大概8440字,阅读时间大约20分钟 本文记录了在CDH5.16.2集群上集成Dolphin Scheduler 1.3.1的详细流程,特别注意一下MySQL数据库的连接串! ...

  4. thinkphp 5 及一下或php项目里实现模糊查询

    想在thinkPHP或者PHP项目实现模糊查询怎么实现呢? 今天在网上搜了一下用 mysql里的 like 就可以实现 怎么用呢? 看代码: 错误用法: where('title','like',$s ...

  5. Vuex与前端表格施展“组合拳”,实现大屏展示应用的交互增强

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 下图是一个产品开发中非常常见的大屏展示界面 ...

  6. Excel 运算符(一):算术运算符

    算术运算符用于最基本的加.减.乘.除运算. 运算符 含义 实例 结果 + 加法运算 =2+3 5 - 减法运算 =5-2 3 * 乘法运算 =5*2 10 / 除法运算 =4/2 2 % 百分数 =5 ...

  7. 图床搭建|chrome插件|操作简单不要钱

    为什么需要一个图床 为了写博客 图床:专门用来存放图片,同时允许你把图片对外连接的网上空间. 用markdown格式写作,插入图片需要图片的url地址,然后博客的背景图也是要用url地址. 有段时间, ...

  8. 【mido】python的midi处理库

    安装mido库:pip install mido pipy地址:https://pypi.org/project/mido/ mido官方文档:https://mido.readthedocs.io/ ...

  9. KingbaseFlySync 专用机版本升级

    关键字: KingbaseFlySync.Linux.x86_64.mips64el.aarch64.Java 专线机版本升级 1.备份kfs配置文件和rename问题,kufl目录 fsrepctl ...

  10. ES6之前,JS的继承

    继承的概念 谈到继承,就不得不谈到类和对象的概念. 类是抽象的,它是拥有共同的属性和行为的抽象实体. 对象是具体的,它除了拥有类共同的属性和行为之外,可能还会有一些独特的属性和行为. 打个比方: 人类 ...