python关于Django搭建简单博客项目(详解一)
上一篇我们说了如何搭建简易博客网站,下面我们来进行详细解答。本文没有特定顺序,请结合上一篇和源代码参照学习。
相关源代码和解析请参看: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搭建简单博客项目(详解一)的更多相关文章
- python关于Django搭建简单博客项目 详解二-setting.py
这一篇我们来讲解setting.py,具体内容以注释形式写入到下面的setting.py代码中,篇幅所限已把官方所给英文注释删除. 全部源代码和详解请参看http://github.com/Cheng ...
- python关于Django搭建简单博客项目(教程)
由于csdn各种django blog博文都有或多或少的bug,所以我决定自己写一篇,先附上教程,详解在另一篇博文里,为了便于大家复制粘贴,本文代码尽量不使用图片. 源代码及解析文章请在我的githu ...
- Django搭建简易博客
Django简易博客,主要实现了以下功能 连接数据库 创建超级用户与后台管理 利用django-admin-bootstrap美化界面 template,view与动态URL 多说评论功能 Markd ...
- Django搭建简易博客教程(四)-Models
原文链接: http://www.jianshu.com/p/dbc4193b4f95 Django Model 每一个Django Model都继承自django.db.models.Model 在 ...
- Django之BBS博客项目
一.登陆功能(验证码) from geetest import GeetestLib from django.contrib import auth #使用极验滑动验证码的登陆 def login(r ...
- 用Django搭建个人博客—(1)
业精于勤荒于嬉,形成于思毁于随. 本阶段的任务小记: 简单介绍一下Django的使用,创建项目和一个app 简单介绍一下Django的settings.py文件的相关配置 整合数据库到自己的博客系统中 ...
- Django 搭建简易博客
新增一个 APP 博客算是一个功能集,因此我们应将其体现为一个模块.这表现在 Django 应用里则是为其创建一个 APP Package.现在让 manage.py 中的 startapp 闪亮登场 ...
- 用Django搭建个人博客—(2)
今日任务: 1 blog的数据库模型定义 2 简单的注册登录功能的实现 项目的源文件已经推送到git@oschina.net. 所以,如果想要参阅源码的请移步 (Fork) http://git.os ...
- Django开发简单博客流程
什么是Django? Django是一个基于python的高级web开发框架 它能够让开发人员进行高效且快速的开发 高度集成(不用自己造轮子), 免费并且开源 当前路径创建工程 django-admi ...
随机推荐
- 基于webgl(threejs)的路面编辑
楔子 在很多应用中,特别是一些园区类的应用. 都需要对园区的地面 环境进行展示,路面就是地面的一部分. 通常的做法是,都是建模的时候把相关的元素都建好,然后导入到展示系统中进行展示. 不过有些情况下, ...
- 稳定好用的短连接生成平台,支持API批量生成
https://www.5w.fit/ 01 安全:快码拥有两种模式:防封模式和极速模式,防封模式使短链更加安全! 02 无流量劫持:快码短链绝不劫持流量! 03 极速:专属大量服务器,支持高并发 ...
- Queue-jumpers - 平衡树
题面 Ponyo and Garfield are waiting outside the box-office for their favorite movie. Because queuing i ...
- 【C标准库】详解strerror函数
创作不易,感谢支持 strerror 头文件:string.h 描述: strerror() 函数接受一个参数:errnum,它是一个表示错误代码的整数值.此函数将错误代码转换为说明错误的合适字符串指 ...
- Android平台Camera2数据如何对接RTMP推流到服务器
1. Camera2架构 在Google 推出Android 5.0的时候, Android Camera API 版本升级到了API2(android.hardware.camera2), 之前使用 ...
- KingbaseESV8R6等待事件之lwlock buffer_content
前言 等待事件是排查数据库性能的指标之一.简单理解,cpu在处理业务时由于业务逻辑,和不可避免的数据库其他原因造成的前台进程等待,这里的等待事件包含buffer类,io类,以及网络类等等,当我们遇到等 ...
- KingbaseES R3集群在线删除数据节点案例
案例说明: kingbaseES R3集群一主多从的架构,一般有两个节点是集群的管理节点,所有的节点都可以为数据节点:对于非管理节点的数据节点可以在线删除:但是对于管理节点,无法在线删除,如果删除管理 ...
- 大家都能看得懂的源码之 ahooks useVirtualList 封装虚拟滚动列表
本文是深入浅出 ahooks 源码系列文章的第十八篇,该系列已整理成文档-地址.觉得还不错,给个 star 支持一下哈,Thanks. 简介 提供虚拟化列表能力的 Hook,用于解决展示海量数据渲染时 ...
- k8s中几个基本概念的理解,pod,service,deployment,ingress的使用场景
k8s 总体概览 前言 Pod 副本控制器(Replication Controller,RC) 副本集(Replica Set,RS) 部署(Deployment) 服务(Service) ingr ...
- 八皇后代码C语言版本
y = x + b -> y-x = b 主对角线上,行下标与列下标之差相等y = -x + b -> y+x = b 副对角线上,行下标与列下标之和相等主对角线 ...