这几篇博客是根据GoodSpeed的博客该写的,看了他的博客收获很大,但是他的博客从第三篇开始,条理很不清晰,加之又是几年之前写的,编写环境发生很大改变,所以对他的博客进行了一个整理,加入了一些自己的东西。

  我使用的是windows 7开发环境。

  配置如下:

  1.python 2.7.2

  2.django 1.7.8

  3. mysql 5.5

  一.新建project
django-admin startproject web

  生成目录如下:

web/
manage.py
web/
__init__.py
urls.py
settings.py
wsgi.py

  运行服务器:

python manage.py runserver
System check identified no issues (0 silenced).
August 08, 2015 - 14:15:04
Django version 1.7.8, using settings 'web.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

  如果出现以上输出说明运行服务器成功

  二.新建app

  在项目中打开cmd输入

python manage.py startapp blog

  执行这条命令之后,在web项目下将生成一个blog文件文件夹,目录如下:

blog/
__init__.py
admin.py
models.py
test.py
views.py
migrations/
__init__.py
  三.配置数据库

  打开settings.py文件,这里我们使用mysql,配置如下

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'blog',
'USER':'root',
'PASSWORD':'root',
'HOST':'',
'PORT':3306,
}
}

  检查配置是否成功,在项目中打开python交互解释器,输入

>>>from django.db import connection
>>>cursor = connection.cursor()

  如果成功运行,说明配置正确,如果不成功,请重新检查

  四.配置models

  打开models.py文件

from django.db import models

# Create your models here.

class Tag(models.Model):
tag_name = models.CharField(max_length = 20,blank=True)
create_time = models.DateTimeField(auto_now_add = True) def __unicode__(self):
return u'%s' %(self.tag_name) class Author(models.Model):
name = models.CharField(max_length = 30)
email = models.EmailField(blank = True)
website = models.URLField(blank =True) def __unicode__(self):
return u'%s' %(self.name) class Blog(models.Model):
caption = models.CharField(max_length = 50)
author = models.ForeignKey(Author)
tags = models.ManyToManyField(Tag,blank = True)
content = models.TextField()
publish_time = models.DateTimeField(auto_now_add = True)
update_time = models.DateTimeField(auto_now_add = True) def __unicode__(self):
return u"%s %s %s " % (self.caption,self.author,self.publish_time)

  检查模型的正确性,在cmd中输入

python manage.py validate

  如果配置正确,输出将如下所示

F:\web>python  manage.py validate
System check identified no issues (0 silenced).

  如果出现问题,django会指出问题出在哪

  同步数据库,执行以下命令:

python manage.py makemigrations
python manage.py migrate
python manage.py syncdb

  这时django将在数据库blog中建立模型类中定义的数据表,在执行syncdb的时候,django会提示建立后台管理用户

  运行服务器,打开127.0.0.1:8000/admin/

  就可以使用后台管理了,但是这时,新建的blog并没没有出现,怎样才能让admin能管理blog了,需要配置admin.py文件。

from django.contrib import admin
from blog.models import Author, Blog, Tag # Register your models here.
class AuthorAdmin(admin.ModelAdmin):
list_display = ('name','email','website')
search_fields = ('name',) class BlogAdmin(admin.ModelAdmin):
list_display = ('caption','id','author', 'publish_time')
list_filter = ('publish_time',) admin.site.register(Author, AuthorAdmin)
admin.site.register(Blog, BlogAdmin)
admin.site.register(Tag)

  这样,就可以使用admin管理blog了。完整界面如下:

django开发简易博客(一)的更多相关文章

  1. django开发简易博客(四)

    上一节,我们讲述了怎么使用静态文件,并使用bootstrap对页面进行了美化,这一节我们将增强我们blog的功能,添加发表博客,删除博客的功能. 一.表单的使用 要实现添加blog的功能,就得使用表单 ...

  2. django 开发简易博客(二)

    这一节我们来了解模板和视图.URL的使用. 一.使用模板 在blog目录中新建templates文件夹,在templates文件夹下新建base.html文件.目录结构如下 templates/ ba ...

  3. django开发简易博客(五)

    这一节将讲述如何添加comments库与ajax的支持. 一.添加comments库 comments库是是django框架内置的一个评论库,可以快速的搭建岀一个评论系统,不过再自定义方面有些麻烦,不 ...

  4. django开发简易博客(三)

    一.静态文件的使用 首先,新建static目录,目录下分别建立css.js.img三个子目录 修改settings.py文件 STATICFILES_DIRS = ( 'F:/web/static', ...

  5. Django搭建简易博客

    Django简易博客,主要实现了以下功能 连接数据库 创建超级用户与后台管理 利用django-admin-bootstrap美化界面 template,view与动态URL 多说评论功能 Markd ...

  6. Django开发个人博客入门学习经验贴

    [写在前面] 入门学习搭建个人博客系统首先还是参考大佬们的经验,记得刚入手Django的时候,一篇博客大佬说过一句话,做技术的不要一开始就扎头于细节中,先把握整体框架,了解这个对象之后再去了解细节,进 ...

  7. Django 搭建简易博客

    新增一个 APP 博客算是一个功能集,因此我们应将其体现为一个模块.这表现在 Django 应用里则是为其创建一个 APP Package.现在让 manage.py 中的 startapp 闪亮登场 ...

  8. 实战Django:简易博客Part1

    舍得学习新技能的时候,通常不喜欢傻读书--捧着一本阐述该项技能的书籍,然后傻看,一路看下来,脑子里塞满了新的概念.知识点,头是越来越大,但技能却几乎没掌握半分. 多年来,舍得养成了用做实例来学习新技能 ...

  9. Django开发简单博客流程

    什么是Django? Django是一个基于python的高级web开发框架 它能够让开发人员进行高效且快速的开发 高度集成(不用自己造轮子), 免费并且开源 当前路径创建工程 django-admi ...

随机推荐

  1. 改变QTreeView项高的方法(改变Delegate行高,或者::data取数据的时候,根据Qt::SizeHintRole进行判断)

    很久之前写过一篇关于QTreeView快速显示超过千万条数据项的方法,如果说那篇文章讲的是QTreeView的内功的话,今天这篇是讲QTreeView的外功,有时我们想改变视图的数据项的行高,那怎么办 ...

  2. java selenium webdriver实战 helloWord

    第一步:建立Maven项目 Selenium 支持 maven 工程,这会让你的工作更加简便. 用 Eclipse 建个 Maven 的工程,建成后,修改 pom.xml <dependenci ...

  3. Android实现获取应用程序相关信息列表的方法

    本文所述为Androdi获取手机应用列表的方法,比如获取到Android应用的软件属性.大小和应用程序路径.应用名称等,获取所有已安装的Android应用列表,包括那些卸载了的,但没有清除数据的应用程 ...

  4. ZOJ Monthly, March 2013

    A题 题目大意:给出一棵树,一开始节点值均为0,先要求完成在线操作:将某子树所有节点值取反,或者查询某子树总点权. 题解:很基础的线段树题,既然两个操作都是子树操作,那么就先树链剖分一下,将子树操作转 ...

  5. HDU 1012 u Calculate e

    题解:直接模拟 #include <cstdio> int main(){ puts("n e");puts("- -----------");pu ...

  6. AOP annotation

    1.xml文件 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http ...

  7. 【转】 一个fork的面试题

    转自:一个fork的面试题 前两天有人问了个关于Unix的fork()系统调用的面试题,这个题正好是我大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分享一下.这个题是这样的: 题 ...

  8. BZOJ 1189: [HNOI2007]紧急疏散evacuate( BFS + 二分答案 + 匈牙利 )

    我们可以BFS出每个出口到每个人的最短距离, 然后二分答案, 假设当前答案为m, 把一个出口拆成m个表示m个时间, 点u到出口v的距离为d, 那么u->v的[d, m]所有点连边, 然后跑匈牙利 ...

  9. C++对象模型3--无重写的单继承

    C++对象模型中加入单继承 不管是单继承.多继承,还是虚继承,如果基于“简单对象模型”,每一个基类都可以被派生类中的一个slot指出,该slot内包含基类对象的地址.这个机制的主要缺点是,因为间接性而 ...

  10. bzoj 1042: [HAOI2008]硬币购物 dp+容斥原理

    题目链接 1042: [HAOI2008]硬币购物 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1706  Solved: 985[Submit][ ...