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 ...
随机推荐
- 完整代码:安卓小软件“CSV联系人导入导出工具”
完整代码:安卓小软件"CSV联系人导入导出工具" 开发了一个安卓小软件"CSV联系人导入导出工具",欢迎测试.本软件可以帮你快速备份和恢复联系人,不用担心号码遗 ...
- 倒计时0日!Apache DolphineScheduler4月 Meetup 大佬手把手教你大数据开发,离线调度
随着互联网技术和信息技术的发展,信息的数据化产生了许多无法用常规工具量化.处理和捕捉的数字信息.面对多元的数据类型,海量的信息价值,如何有效地对大数据进行挖掘分析,对大数据工作流进行调度,是保障企业大 ...
- 如何在CDH5上部署Dolphin Scheduler 1.3.1
点击蓝色字关注! 本篇文章大概8440字,阅读时间大约20分钟 本文记录了在CDH5.16.2集群上集成Dolphin Scheduler 1.3.1的详细流程,特别注意一下MySQL数据库的连接串! ...
- thinkphp 5 及一下或php项目里实现模糊查询
想在thinkPHP或者PHP项目实现模糊查询怎么实现呢? 今天在网上搜了一下用 mysql里的 like 就可以实现 怎么用呢? 看代码: 错误用法: where('title','like',$s ...
- Vuex与前端表格施展“组合拳”,实现大屏展示应用的交互增强
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 下图是一个产品开发中非常常见的大屏展示界面 ...
- Excel 运算符(一):算术运算符
算术运算符用于最基本的加.减.乘.除运算. 运算符 含义 实例 结果 + 加法运算 =2+3 5 - 减法运算 =5-2 3 * 乘法运算 =5*2 10 / 除法运算 =4/2 2 % 百分数 =5 ...
- 图床搭建|chrome插件|操作简单不要钱
为什么需要一个图床 为了写博客 图床:专门用来存放图片,同时允许你把图片对外连接的网上空间. 用markdown格式写作,插入图片需要图片的url地址,然后博客的背景图也是要用url地址. 有段时间, ...
- 【mido】python的midi处理库
安装mido库:pip install mido pipy地址:https://pypi.org/project/mido/ mido官方文档:https://mido.readthedocs.io/ ...
- KingbaseFlySync 专用机版本升级
关键字: KingbaseFlySync.Linux.x86_64.mips64el.aarch64.Java 专线机版本升级 1.备份kfs配置文件和rename问题,kufl目录 fsrepctl ...
- ES6之前,JS的继承
继承的概念 谈到继承,就不得不谈到类和对象的概念. 类是抽象的,它是拥有共同的属性和行为的抽象实体. 对象是具体的,它除了拥有类共同的属性和行为之外,可能还会有一些独特的属性和行为. 打个比方: 人类 ...