03. Starting the blog app

  在这部分,将要为你的project创建一个blog 应用,通过编辑setting.py文件,并把它添加到INSTALLED_APPS。

在你的命令行终端上,输入下面命令:

django-admin.py startapp blog

如果一切按照预期进行,你将有下面的文件目录。进入到blog目录下面。

Django做了如下事情:

* blog/__init__.py : 空文件,但是是python的特殊文件

* models.py : 用来定义你blog model 的文件

* views.py : 用来定义view函数

* tests.py : 对你的开发来说,很好的东西,但是今天的教程不涉及

We'll wrap up this section of tutorial with a final task. 在settings.py文件中,有一个元组叫做INSTALLED_APPS, 这个元组用来告诉django都有什么app在project中。你应该打开settings.py文件,修改INSTALLED_APPS, 让你的blog应用在INSTALLED_APPS列表中。把你的本地应用放在列表的后面是一个好的习惯。修改你的settings.py,让它像下面这样:

你现在已经创建了blog应用,并且将它添加到了INSTALLED_APPS中,现在是时间写一些models,相当于数据库。

04.Writing the blog models

  当你使用Django的时候,你不用写SQL。你只需要写models。在这部分,将会介绍你关于django的models。

  Models用来生成数据库表,而且它有很多ORM(object relational mapping)API用来从数据库提取数据,或者插入数据。

  打开你的blog目录里面,打开models.py文件,修改该文件,让它的内容想下面这样:

from django.db import models
from django.core.urlresolvers import reverse class Post(models.Model):
title = models.CharField(max_length=255)
slug = models.SlugField(unique=True,max_length=255)
description = models.CharField(max_length=255)
content = models.TextField()
published = models.BooleanField(default=True)
created = models.DateTimeField(auto_now_add=True) class Meta:
ordering = ['-created'] def __unicode__(self):
return u'%s' % self.title def get_absolute_url(self):
return reverse('blog.views.post', args=[self.slug])

  好的,你刚刚已经创建了你的blog model. 你给它赋予了各种各样的属性用各种field的组合。

花一点时间,根据我下面给出的链接看看下面每种field响应的django文档,想想每一个我们给出的参数是什么意思。

* title 和 description 都是model.CharField https://docs.djangoproject.com/en/1.4/ref/models/fields/#charfield

* slug 是 models.SlugField https://docs.djangoproject.com/en/1.4/ref/models/fields/#slugfield

* content 是 models.TextField https://docs.djangoproject.com/en/1.4/ref/models/fields/#textfield

* published 是 models.BooleanField https://docs.djangoproject.com/en/1.4/ref/models/fields/#booleanfield

* created 是 models.DateTimeField https://docs.djangoproject.com/en/1.4/ref/models/fields/#datetimefield

  我们同时给我们的model 类一些方法。第一个是__unicode__ ,被用来向人显示类对象的。技术上来说, 这个方法返回一个unicode 对象,因为你刚刚涉及django或者python,所以不打算展开unicode。如果想进一步了解,请戳入 https://docs.djangoproject.com/en/dev/ref/unicode/#choosing-between-str-and-unicode

  第二个方法是get_absolute_url,当我们要链接特定的post地址,用来返回url的

  你应该注意到了内部类Meta。这个是用来设置model类应该按照什么来排序的。在这篇教程里面的例子,Post 对象被用created时间来排序。“-”符号就是告诉Django按照降序排序对象。

  下面的就是你刚刚已经完成的事情:

* 创建了一个blog model

* 阅读一些关于model field的文档

* 了解每一种方法做了什么

* 避免了学习unicode的痛苦

有人提到数据库吗?

05. Creating the database

  数据库是很多web应用的基础,Django也不例外。在这部分教程教你如何配置django数据库设置然后用django管理命令同步数据库和models。

  配置django项目用settings.py。所以打开这个文件,在DATABASES字典里,打开在文件的12行,修改它让它符合下面的样子:

  

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'netmag.db', # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
'USER': '',
'PASSWORD': '',
'HOST': '', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
'PORT': '', # Set to empty string for default.
}
}

  你刚才配置django使用sqlite数据库后台,而且告诉数据调用数据库netmag.db。我选择这个数据库后台,因为它需要最少的配置最适合像这样的教程了。然而,你如果想让这个项目真正上线,那你可能需要选择数据后台PostgreSQL 或者 mysql,但是这个改天在研究了。

  配置好数据库设置了,你现在就可以创建你的数据库了。因为这是你一次同步数据库和model所以你可能会被问到要不要创建一个管理员账号。这个你将在下一节用到。请记住你的输入的用户名和密码,放心,你这里输入的消息不回被泄露的。

  切换到命令行终端,输入下面命令:

python manage.py sycndb

  在你的项目根目录下面,你会发现出现了一个新的文件叫做netmag.db。这就是你的数据库,你的blog posts就被存储在这里。所以不要删除它!!

  切换到浏览器,刷新,没有什么东西改变。还一样是空白的。在下一节,我们将通过添加admin完善这一部分。但是现在,先看看你这部分已经完成了什么:

* 配置数据库设置

* 第一次运行syncdb命令创建数据库

* 创建一个管理员账号,这个账号将用来登录admin

用django搭建一个简易blog系统(翻译)(二)的更多相关文章

  1. 用django搭建一个简易blog系统(翻译)(四)

    12. Create the templates 你需要做三件事来去掉TemplateDoesNotExist错误 第一件,创建下面目录 * netmag/netmag/templates * net ...

  2. 用django搭建一个简易blog系统(翻译)(三)

    06. Connecting the Django admin to the blog app Django 本身就带有一个应用叫作Admin,而且它是一个很好的工具 在这一部分,我们将要激活admi ...

  3. 用django搭建一个简易blog系统(翻译)(一)

    Django 入门 原始网址: http://www.creativebloq.com/netmag/get-started-django-7132932 代码:https://github.com/ ...

  4. 通过django搭建一个简易的web页面(实现数据的查询、添加、修改、删除)

    一.创建django项目 通过命令创建: django-admin startproject 项目名称 创建app应用 python3 manage.py startapp 应用名 #这里manage ...

  5. python django搭建一个简易博客的解析(按照文件顺序逐一讲解)

    上次讲解了一下各py文件的内容,但比较乱,所以这次整理了一个顺序版. 源代码请在http://github/Cheng0829/mysite自行下载 mysite: db.sqlite3:数据库文件. ...

  6. 通过rsync搭建一个远程备份系统(二)

    Rsync+inotify实时备份数据 rsync在同步数据的时候,需要扫描所有文件后进行对比,然后进行差量传输,如果文件达到了百万或者千万级别以上是,扫描文件的时间也很长,而如果只有少量的文件变更了 ...

  7. django 搭建一个投票类网站(二)

    前一篇讲了创建一个工程和一个polls的应用程序,以及配置了数据库. 这篇就继续讲吧 1.django admin模块 admin模块是django自带的模块,他让开发者可以不用管写任何代码的情况下就 ...

  8. django开发个人简易Blog——数据模型

    提到数据模型,一定要说一下MVC,MVC框架是现代web开发中最流行的开发框架,它将数据与业务逻辑分开,减小了应用之间的高度耦合.个人非常喜欢MVC开发框架,除了具有上述特性,它使得web开发变得非常 ...

  9. Angularjs,WebAPI 搭建一个简易权限管理系统

    Angularjs,WebAPI 搭建一个简易权限管理系统 Angularjs名词与概念(一)   1. 目录 前言 Angularjs名词与概念 权限系统原型 权限系统业务 数据库设计和实现 Web ...

随机推荐

  1. java_log4j 经典配置

    程序加载制定日志文件 public static final String log4j = "log4j.xml"; /** * @declare 加载log4j * @throw ...

  2. Sicily 1732 Alice and Bob (二进制最大公约数)

    联系: http://soj.me/1732 Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description: Alice is a b ...

  3. 搭建一个BS 的简单SOA 架构(直接通过jquery 调用后台的 wcf 服务的架构)(第一天)

    亲们!还在用传统的三层架构吗?你还在对SOA架构 不了解吗? 那就赶快来学习下一个 比较简单的SOA的架构吧!我会手把手的 教会你们怎么搭建这个 简单的SOA的架构. 其中用的技术点保证  WCF,a ...

  4. DDD分层架构的进化

    .NET逻辑分层架构演示:DDD分层架构的进化 概述:   架构是高层的设计,如果设计和理解有误,必将在实现时带来各种问题.架构又是最稳定的,不会因为各种具体技术的依赖,如各种UI框架.ORM框架.I ...

  5. 关于UtilTimerStack类的使用--XWork2、Struts2内置性能诊断类

    关于UtilTimerStack类的使用--XWork2.Struts2内置性能诊断类 一.UtilTimerStack做什么用的? 这个本来是Xwork2(Struts2的核心)的相关的工具类,可以 ...

  6. Beginning Python From Novice to Professional (5) - 条件与循环

    条件与循环 条件运行: name = raw_input('What is your name? ') if name.endswith('Gumby'): print 'Hello, Mr.Gumb ...

  7. java设计模式之六适配器模式(Adapter)

    适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题.主要分为三类:类的适配器模式.对象的适配器模式.接口的适配器模式.首先,我们来看看类的适配器模 ...

  8. sql分页查询公式

    分页查询公式: select top PageRow(每页显示的数据行数) from 表名 where 主键  not in(select top PageRow*(当前页数-1) 主键  from ...

  9. java之JAVA异常

    异常的分类 1. 编译时被检测异常:只要是Exception和其子类都是,除了特殊子类RuntimeException体系.         此类异常在处理时必须进行声明或进行捕捉         这 ...

  10. HBuilder HTML 自定义代码块

    =begin 本文档是HTML代码块的编辑文件.注意不要把其他语言的设置放到html里来. HBuilder可使用ruby脚本来编辑代码块和增强操作命令. 1.编辑代码块 如果要新增一个代码块,复制如 ...