用Django搭建个人博客—(2)
今日任务:
1 blog的数据库模型定义
2 简单的注册登录功能的实现
项目的源文件已经推送到git@oschina.net.
所以,如果想要参阅源码的请移步 (Fork) http://git.oschina.net/gitlab/Missuor/
Tag: v1.0.0.02 http://git.oschina.net/gitlab/Missuor/tree/v1.0.0.02
首先把昨天的历史遗留问题解决掉.
Hello World
SHA-1: http://git.oschina.net/gitlab/Missuor/commit/64f14dba765ae93d1adf77559416bc438919bcf8
在core文件夹下面新建文件views.py
(新多出来的static文件夹和templates文件夹会在后面说明)
图 1 没啥好说的
图 2 hello_world函数定义
扩展阅读: Writing views
https://docs.djangoproject.com/en/1.7/topics/http/views/#writing-views
图 3 Hello World的url配置
扩展阅读:
URL dispatcher
https://docs.djangoproject.com/en/1.7/topics/http/urls/#url-dispatcher
python manage.py runserver 然后访问 http://127.0.0.1:8000/hello-world/
图 4 Hello World页面
扩展阅读:
https://docs.djangoproject.com/en/1.7/intro/tutorial03/#write-your-first-view
定义Blog数据库模型
源码阅读: http://git.oschina.net/gitlab/Missuor/blob/f32277c3b25c565d9c97c7e582b38b4537c51cc0/blog/models.py
关于Django数据库模型的定义,这里提供几个参考文档的链接地址 Model field reference [1] 和 Model Meta options [2]
图 5 blog的数据库模型
扩展阅读:
Model field reference
https://docs.djangoproject.com/en/1.7/ref/models/fields/
Model Meta options
https://docs.djangoproject.com/en/1.7/ref/models/options/#model-meta-options
这里补充说明一点昨天漏掉的东西,python manage.py startapp blog过后,激活该app的话必须在settings.py 的INSTALLED_APPS中添加该app的名字,这样blog才能使用.
图 6 settings.py 的INSTALLED_APPS项中激活blog
在项目根路径下载命令行窗口中键入 python manage.py validate 用来检测数据库定义是否通过验证.如图 6-2 所示则为正常
图 6 – 2 检测模型的定义是否正确
定义Blog的views中的几个基本的函数--注册 登录 注销
图 7 blog的views.py函数预定义
图 8 blog的urls.py定义
将blog的URL_conf应用到项目
源码阅读: http://git.oschina.net/gitlab/Missuor/commit/5fafa9be7ea750ee9301900a9d7d1c12020500a8
图 9 在核心urls.py中引入blog是url配置文件
文件路径: http://git.oschina.net/gitlab/Missuor/tree/master/templates/core
图 10 从django自己的admin模板文件中拷贝几个基础模板文件作为自定义模板
图 11 Django默认的模板路径
源码阅读: http://git.oschina.net/gitlab/Missuor/blob/master/templates/core/base.html
图12 定义站点的基本模板文件base.html
扩展阅读:
HTML
http://www.w3school.com.cn/html/index.asp
CSS
http://www.w3school.com.cn/css/index.asp
JavaScript
http://www.w3school.com.cn/js/index.asp
图 13 模板文件继承与重载
扩展阅读:
The Django template language
https://docs.djangoproject.com/en/1.7/topics/templates/#the-django-template-language
图 14 给自己的blog添加几个模板文件
图 15 没啥好说的 装一个需要用到的库pillow
图 16 利用pip安装pillow库
图 17 User的models定义中,有一个ImageField字段是用来盛放用户头像信息的,这就是为什么需要安装pillow库的原因
注册登录注销后台代码实现
源码阅读: http://git.oschina.net/gitlab/Missuor/blob/ae4419578c328c1c413a0ffb1698b782046a99f3/blog/views.py
图 18-0 blog.views.header
注册
图 18 blog.views.register 注册的后台代码
扩展阅读:
View decorators
https://docs.djangoproject.com/en/1.7/topics/http/decorators/#module-django.views.decorators.http
PEP 3129 - Class Decorators
https://www.python.org/dev/peps/pep-3129/
PEP 318 - Decorators for Functions and Methods
https://www.python.org/dev/peps/pep-0318/
登录
图 19 blog.views.login 登录的后台代码
注销
图 20 blog.views.logout 注销的后台代码
子页面首页
图21 blog.views.index 博客的页面首页后台代码
定义用于验证用户的表单
源码阅读: http://git.oschina.net/gitlab/Missuor/blob/3b7c79a11b5384ef674cece3863af375c4e16fb9/blog/forms.py
图 22 blog.forms 博客用户验证的form表单的后台代码
扩展阅读:
Working with forms
https://docs.djangoproject.com/en/1.7/topics/forms/#working-with-forms
成果展示 1 HomePage
成果展示 2 Login
成果展示 -3 Register
我会抽空把代码往这里堆一堆的,方便小伙伴们直接查阅批注^7^.
edit. @MrWho
2015-01-22 1:02
用Django搭建个人博客—(2)的更多相关文章
- Django搭建简易博客
Django简易博客,主要实现了以下功能 连接数据库 创建超级用户与后台管理 利用django-admin-bootstrap美化界面 template,view与动态URL 多说评论功能 Markd ...
- python关于Django搭建简单博客项目(详解一)
上一篇我们说了如何搭建简易博客网站,下面我们来进行详细解答.本文没有特定顺序,请结合上一篇和源代码参照学习. 相关源代码和解析请参看:https://github.com/Cheng0829/mysi ...
- 用Django搭建个人博客—(1)
业精于勤荒于嬉,形成于思毁于随. 本阶段的任务小记: 简单介绍一下Django的使用,创建项目和一个app 简单介绍一下Django的settings.py文件的相关配置 整合数据库到自己的博客系统中 ...
- python关于Django搭建简单博客项目(教程)
由于csdn各种django blog博文都有或多或少的bug,所以我决定自己写一篇,先附上教程,详解在另一篇博文里,为了便于大家复制粘贴,本文代码尽量不使用图片. 源代码及解析文章请在我的githu ...
- Django 搭建简易博客
新增一个 APP 博客算是一个功能集,因此我们应将其体现为一个模块.这表现在 Django 应用里则是为其创建一个 APP Package.现在让 manage.py 中的 startapp 闪亮登场 ...
- 用Django搭建个人博客—(3)
今日主题 定义博客文章和评论的的数据库定义 定义操作这几个Model的后台数据 User表 USER_STATUS = ( ('active', u'激活'), ('suspended', u'禁用' ...
- Django搭建简易博客教程(四)-Models
原文链接: http://www.jianshu.com/p/dbc4193b4f95 Django Model 每一个Django Model都继承自django.db.models.Model 在 ...
- python关于Django搭建简单博客项目 详解二-setting.py
这一篇我们来讲解setting.py,具体内容以注释形式写入到下面的setting.py代码中,篇幅所限已把官方所给英文注释删除. 全部源代码和详解请参看http://github.com/Cheng ...
- 基于django的个人博客网站建立(一)
基于django的个人博客网站建立(一) 前言 网站效果可点击这里访问 之前基于hexo和github page搭建过一个博客网页,后来由于换了个系统,感觉弄的有点麻烦也就没有再去管它了,最近偶然从网 ...
随机推荐
- TreeMap简单simple
TreeMap能够按照主键对里面的数据进行排序,基于上篇文章:java集合类之TreeMap中有关于TreeMap内部实现的详细介绍.本文主要是写了些使用TreeMap的简单demo. 要想实现Tre ...
- RocketMq消息队列使用
最近在看消息队列框架 ,alibaba的RocketMQ单机支持1万以上的持久化队列,支持诸多特性, 目前RocketMQ在阿里集团被广泛应用在订单,交易,充值,流计算,消息推送,日志流式处理,bin ...
- 深入理解C++中的explicitkeyword
深入理解C++中的explicitkeyword kezunhai@gmail.com http://blog.csdn.net/kezunhai C++中的explicitkeyword仅仅能用于修 ...
- [Oracle] - 性能优化工具(1) - AWR
AWR快照 默认情况下,Oracle每隔一小时会自己主动产生一个快照,保存近期8天的快照. 我们能够通过例如以下语句获得产生快照的时间间隔和保存的天数: SYS@orcl(lx15)> sele ...
- careercup-数组和字符串1.4
1.4 编写一个方法,将字符串中的空格全部替换为“%20“.假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的”真实“长度. C++实现代码: #include<iostream> ...
- C#面向对象(二)
一:抽象方法 1. 在面向对象编程语言中抽象方法指一些只有方法声明,而没有具体方法体的方法.抽象方法一般存在于抽象类或接口中. 在一些父类中,某些行为不是非常明确,因此无法用代码来具体实现,但是类还必 ...
- CS=0xFFFF IP=0x0000与CS=F000 IP=FFF0
计算机自动上电后,有些书上说CS=0xFFFF IP=0x0000,例如linux内核设计的艺术(第三版).也有一些书说CS=F000 IP=FFF0,例如赵炯的linux内核完全注释. 其实并不是说 ...
- [DB2]实现项目多数据库切换(上)--环境部署
基本软硬件信息:Windows 8.1 X64 / Microsoft Visual Studio 2012 / ThinkPad S3-S431 安装工具:IBM Data Studio 4.1. ...
- CI 笔记 easyui 结合后,左侧导航跳转问题
1. 在进行时,还没有做完整个项目时,可能不是最终稿 2. 从数据库中nav表中,读出url地址,然后,从admin中,重写这些url跳转 3. 在admin的控制器中,跳转写的并不完美, publi ...
- winfrom面向对象1
1:面向对象的技术概论 要学习好面向对象,我们应该从三个问题入手: 1.什么是面向对象? 2.为什么要面向对象? 3.该怎么面向对象? 对象的定义是人们要进行研究的任何事物,从最简单的整数到复杂的飞机 ...