实战Django:简易博客Part1
舍得学习新技能的时候,通常不喜欢傻读书——捧着一本阐述该项技能的书籍,然后傻看,一路看下来,脑子里塞满了新的概念、知识点,头是越来越大,但技能却几乎没掌握半分。
多年来,舍得养成了用做实例来学习新技能的习惯。这可不是舍得的独创,在象棋、围棋界中,历来有“打谱”一说,就是根据棋谱,把一步步棋摆出来,在打谱的过程中,去感悟、去吸收,此时感悟到的、吸收进的,才是属于你自己的东西。新的技能就这样一步步发展起来,逐渐壮大。
就象Django官方文档那样,一个实例看起来很简单,但作为初学者,用”打谱“的方式一遍遍去做这个实例,比起将书拿起来从头看到尾的傻读书,进步速度何止高出一两倍?
所以在介绍新技能的书籍中,舍得偏爱那些用实例来传道、授业、解惑的书。
《Django WEB开发指南》(《Python Web Development with Django》)是为数不多的Django精品书籍之一,出版于2009年,并于同年被引入国内,由机械工业出版社出版。这本书中绝大部分篇幅用实例来讲解Django的使用,恰好是舍得欣赏的类型。遗憾的是当时所用的Django是1.0版,代码上和我们现在用的Django 1.7.1有一定的差异。对于新人来说,实践起来颇为费事。舍得将书中的实例重新整理,用Django 1.7.1的标准来修正其中的代码,以方便初学者利用这些实例来学习Django。
今天舍得要讲的,便是该书中的第一个实例:blog.这个实例非常简单,基本的操作与官方实例很相近,我们可以通过这个实例来复习一下前面学到的知识。
0.上路之前
舍得强烈建议大家动手来逐一完成本实例的细节。如果你第一次接触Django,建议先做舍得在《实战Django:官方实例》系列中的实例,那里介绍了Django中最基本的技术。
在做实例的过程中,如果你遇到和你在这里看到的结果不同的情况时,请停下来检查刚才的步骤,然后复查之前的两到三步。看看是不是有哪些看起来不太重要的地方,或哪些不能理解的步骤遗漏掉了。如果还是没有发现,不如删掉整个项目从头开始做,这个方法非常管用。
1.创建项目和应用
我们先来创建本实例的项目,在dos命令提示符下转到Scripts文件夹(如“c:\python32\Scripts”),然后运行如下命令:
$ django-admin startproject blogproject
没有任何错误提示的话,说明项目创建成功了,然后在dos命令提示符下继续输入命令,进入项目文件夹:
cd blogproject
开始创建应用,在dos命令提示符下输入命令:
$ python manage.py startapp blog
命令执行完后,blogproject文件夹下会多出一个叫blog的文件夹,应用就建好了。
2.建立模型
编辑blog/models.py文件,象下面这样:
blog/models.py:
from django.db import models
class BlogPost(models.Model):
title = models.CharField(max_length=150)
body = models.TextField()
timestamp = models.DateTimeField() class Meta:
ordering = ('-timestamp',)
3.激活模型
首先修改blogproject/settings.py这个文件,找到INSTALLED_APPS这段设置,把它改成下面这个样子:
blogproject/settings.py:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
)
编辑settings.py的时候,建议顺便修改一下语言和时区的设置,具体的方法请参考:《实战Django:官方实例Part1》
然后在dos命令提示符下运行如下命令:
$ python manage.py makemigrations blog
继续在dos命令提示符下运行命令:
$ python manage.py migrate
这样,就把数据库建好了。
4.创建管理员账号
在dos命令提示符下运行如下命令:
$ python manage.py createsuperuser
然后依次输入admin,你的邮箱,输入两次密码,完成创建管理员的操作。
5.在管理界面注册应用
编辑blog/admin.py 文件,让它变成下面这个样子:
blog/admin.py:
from django.contrib import admin
from blog.models import BlogPost admin.site.register(BlogPost)
6.启动服务器
在dos命令提示符下运行如下命令:
$ python manage.py runserver
命令执行后,你会看到类似这样的字符出现:
December 07, 2014 - 18:56:24
Django version 1.7.1, using settings 'blogproject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
这就表示服务器已经成功启动了.
我们先访问一下管理界面,打开浏览器,在地址栏内输入:
然后输入你刚才创建的管理员账号和密码,登录管理界面,你会看到下面这样的画面:
如果你看到的和这里显示的不一样,请返回检查前面的操作。
Tips:
三个最常见的”在管理界面看不到我的应用“的原因:
1.没有在应用的admin.py中注册应用的模型;
2.应用的模型配置错误;
3.忘记往项目的aettings.py的INSTALLED_APPS添加你的应用;
7.添加文章
点击Blog posts右侧的“增加”按钮,管理界面会显示一个表单,让你用来添加文章:
往里填写一些内容试试,填完后点击”保存“按钮。
你会收到一个确认消息:“BlogPost object”添加成功。同时Django会列出你的文章列表,目前只有一篇文章。
再次看到象BlogPost object这样的难看名字,回忆一下我们在《实战Django:官方实例Part2》中是怎么处理的?
编辑blog/admin.py 文件,让它变成下面这个样子:
blog/admin.py:
from django.contrib import admin
from blog.models import BlogPost class BlogPostAdmin(admin.ModelAdmin):
list_display = ('title', 'timestamp') admin.site.register(BlogPost, BlogPostAdmin)
刷新一下浏览器,我们可以看到:
在这里,我们可以用在官方实例里学到的技能,给管理页面增加搜索、自定义排序、过滤等功能。舍得不再就这些问题一一讲解,大家自行练习吧。
【未完待续】
本文版权归舍得学苑所有,欢迎转载,转载请注明作者和出处。谢谢!
作者:舍得
首发:舍得学苑@博客园
实战Django:简易博客Part1的更多相关文章
- django 简易博客开发 5 markdown支持、代码高亮、gravatar头像服务
上一篇博客介绍了comments库使用及ajax支持,现在blog已经具备了基本的功能,但是只能发表文字,不支持富文本编辑.今天我们利用markdown添加富文本支持. markdown语法说明: h ...
- django 简易博客开发 4 comments库使用及ajax支持
首先还是贴一下源代码地址 https://github.com/goodspeedcheng/sblog 上一篇文章我们介绍了静态文件使用以及如何使用from实现对blog的增删改,这篇将介绍如何给 ...
- django 简易博客开发 3 静态文件、from 应用与自定义
首先还是贴一下源代码地址 https://github.com/goodspeedcheng/sblog 上一篇博客我们介绍了 django 如何在views中使用templates以及一些常用的数 ...
- django 简易博客开发 2 模板和数据查询
首先还是贴一下项目地址 https://github.com/goodspeedcheng/sblog 因为代码全在上面 上一篇博客我们介绍了 django的安装配置,新建project,新建a ...
- django 简易博客开发 1 安装、创建、配置、admin使用
首先贴一下项目地址吧 https://github.com/goodspeedcheng/sblog 到现在位置项目实现的功能有: 1.后台管理使用Admin ,前端显示使用bootstrap 2. ...
- django 简易博客开发 1 安装、创建、配置、admin使用(转)
Django 自称是“最适合开发有限期的完美WEB框架”.本文参考<Django web开发指南>,快速搭建一个blog 出来,在中间涉及诸多知识点,这里不会详细说明,如果你是第一次接触D ...
- Django搭建简易博客
Django简易博客,主要实现了以下功能 连接数据库 创建超级用户与后台管理 利用django-admin-bootstrap美化界面 template,view与动态URL 多说评论功能 Markd ...
- Django练习——博客系统小试
在上一篇博客Todolist的基础上(http://blog.csdn.net/hcx25909/article/details/24251427),本周继续进行实践,这次我要搭建一个简单的博客系统. ...
- Django搭建简易博客教程(四)-Models
原文链接: http://www.jianshu.com/p/dbc4193b4f95 Django Model 每一个Django Model都继承自django.db.models.Model 在 ...
随机推荐
- POJ1979 Red and Black (简单DFS)
POJ1979 Description There is a rectangular room, covered with square tiles. Each tile is colored eit ...
- 关于Windows平台下应用程序加载DLL模块的问题.
本文将讨论以下问题: (1)Windows可执行程序会从哪些目录下加载DLL. (2)如何将可执行使用的DLL放置到统一的目录下,而不是与EXE同一目录. (3)可执行程序加载了不该加载的DLL. ( ...
- Orchard官方文档翻译(五) Dashboard相关
原文地址:http://docs.orchardproject.net/Documentation/Getting-around-the-dashboard 想要查看文档目录请用力点击这里 最近想要学 ...
- <路径算法>哈密顿路径变种问题(2016华为软件精英挑战赛初赛)
原创博客,转载请联系博主! 前言:几天前华为的这个软件精英(算法外包)挑战赛初赛刚刚落幕,其实这次是我第二次参加,只不过去年只入围到了64强(32强是复赛线),最后搞到了一个华为的一顶帽子(感谢交大l ...
- 怎样用VB编写.DLL动态链接库文件
VB一般可以生成两种特殊的DLL,一个是ActiveX DLL和ActiveX Control(*.ocx).这两种DLL都是VB支持的标准类型,在VB自身的例子中有,你可以参考.更详细的介绍可以参考 ...
- [linux] 替换字符串
Linux下批量替换多个文件中的字符串的简单方法.用sed命令可以批量替换多个文件中的字符串. 命令如下:sed -i “s/原字符串/新字符串/g” `grep 原字符串 -rl 所在目录` 例如: ...
- NOI2002 银河英雄传说
P1196 银河英雄传说 367通过 1.1K提交 题目提供者该用户不存在 标签并查集NOI系列2001(或之前) 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 莱因哈特什么鬼? 私人代码 ...
- TCP/IP详解学习笔记(6)-- IP选路
1.概述 路由算法是用于获取路由表中的路由项目.它是路由选择协议的核心. 2.路由算法的分类 从路由算法能否随网络的通信量或拓扑自适应的进行调整变化来分,可以分为两类. 静态路由选 ...
- 使用.NET MVC框架项目开发流程(项目开发流程)
MVC项目开发流程 整理需求,进行需求分析.项目设计. 整理数据项,建数据库做前期准备,并整理字典. 建立所需数据库表和视图和模型. 页面实现其初步功能(跳过逻辑后台代码),只是实现页面之间的跳转以及 ...
- svn服务端配置
1.建立版本库 创建一个新的Subversion项目svnadmin create /var/www/svndata/njlrxx 配置允许用户jiqing访问cd /var/www/svndata/ ...