`
小麦麦子
  • 浏览: 30697 次
文章分类
社区版块
存档分类
最新评论

用Django 如何开发内容管理系统

阅读更多

 

       python开发中,我们常常使用Django来开发简易的内容管理系统,比如:开发显示新闻的列表,从列表中可点击查看具体内容,这种新闻展示型网站。但对于初学者来说,拿到一个内容管理系统的需求,我们往往无从下手。今天我们就和大家分享下,使用Django 开发的操作步骤。

 

一,搭建互不干扰的 Python 包开发环境

      在程序开发中,我们常常会在同一个电脑上面存在多个项目,或许会有一个依赖 Django 1.8,另一个依赖 Django 1.5,这时候我们怎么办呢?

       这个时候,我们就需要一个依赖包管理的工具来处理不同的环境。

 

1环境搭建

丰富经验的程序员都会用 virtualenv 来管理多个开发环境,virtualenvwrapper 使得virtualenv变得更好用。

# 安装:

(sudo) pip install virtualenv virtualenvwrapper

Linux/Mac OSX 下:

修改~/.bash_profile或其它环境变量相关文件,添加以下语句

 

export WORKON_HOME=$HOME/.virtualenvs

export PROJECT_HOME=$HOME/workspace

source /usr/local/bin/virtualenvwrapper.sh

Windows 下:

pip install virtualenvwrapper-win

【可选】Windows下默认虚拟环境是放在用户名下面的Envs中的,与桌面,我的文档,下载等文件夹在一块的。更改方法:计算机,属性,高级系统设置,环境变量,添加WORKON_HOME

 

 

2、使用方法:

mkvirtualenv zqxt:创建运行环境zqxt

workon zqxt: 工作在 zqxt 环境

 

其它的:

rmvirtualenv ENV:删除运行环境ENV

mkproject mic:创建mic项目和运行环境mic

mktmpenv :创建临时运行环境

lsvirtualenv : 列出可用的运行环境

lssitepackages : 列出当前环境安装了的包

 

创建的环境是独立的,互不干扰,无需sudo权限即可使用 pip 来进行包的管理。

 

二,安装软件,开发 minicms 项目

1、创建一个开发环境 minicms

 

# Linux Mac OSX

mkproject minicms

 

# windows

mkvirtualenv minicms

Mac OSX 下的输出示例:

 

mkproject minicms

New python executable in minicms/bin/python

Installing setuptools, pip...done.

Creating /Users/tu/YunPan/workspace//minicms

Setting project for minicms to /Users/tu/YunPan/workspace/minicms

(minicms)tu@mac ~/YunPan/workspace/minicms $

 

2安装 Django

pip install Django==1.8.3

 

3、创建项目 minicms 应用 news

django-admin.py startproject minicms

cd minicms

python manage.py startapp news

添加 news settings.py 中的 INSTALLED_APPS 中。

 

4、规划 news 中的栏目和每篇文章相关的字段

栏目:名称,网址,简介等

文章:标题,作者,网址,内容等

假设一篇文章只有一个作者(文章和作者是多对一的关系),一篇文章可以属于多个栏目(栏目和文章是多对多的关系),为了用到更多的情况,我们假设作者可以为空,栏目不能为空。

 

开写 models.py

 

# -*- coding: utf-8 -*-

from __future__ import unicode_literals

from django.db import models

from django.utils.encoding import python_2_unicode_compatible

@python_2_unicode_compatible

class Column(models.Model):

  name = models.CharField('栏目名称', max_length=256)

  slug = models.CharField('栏目网址', max_length=256, db_index=True)

  intro = models.TextField('栏目简介', default='')

  def __str__(self):

    return self.name

  class Meta:

    verbose_name = '栏目'

    verbose_name_plural = '栏目'

    ordering = ['name']  # 按照哪个栏目排序

@python_2_unicode_compatible

class Article(models.Model):

  column = models.ManyToManyField(Column, verbose_name='归属栏目')

  title = models.CharField('标题', max_length=256)

  slug = models.CharField('网址', max_length=256, db_index=True)

  author = models.ForeignKey('auth.User', blank=True, null=True, verbose_name='作者')

  content = models.TextField('内容', default='', blank=True)

  published = models.BooleanField('正式发布', default=True)

  def __str__(self):

    return self.title

  class Meta:

    verbose_name = '教程'

verbose_name_plural = '教程'

 

5、创建数据库

python manage.py makemigrations news

python manage.py migrate

 

6、创建完数据库后,修改以往字段

      在数据库创建完成后,使用一段时间,或许你会发现,以前的字段并不合理,比如我们想记录文章添加的日期,修改的日期,我们更改 models.py (不变动的大部分省去了,添加两个字段)

 

...省略

class Article(models.Model):

  ...原来的字段省去

  pub_date = models.DateTimeField('发表时间', auto_now_add=True, editable=True)

  update_time = models.DateTimeField('更新时间', auto_now=True, null=True)

  ...省略

这时候,我们对 models.py 进行了更改,这些字段数据库中还没有,我们要同步更改到数据库中去:

 

python manage.py makemigrations news

You are trying to add a non-nullable field 'pub_date' to article without a default; we can't do that (the database needs something to populate existing rows).

 

Please select a fix:

 

1) Provide a one-off default now (will be set on all existing rows)

 

2) Quit, and let me add a default in models.py

 

这段话的意思是 pub_date 字段没有默认值,而且非Null 那么

1) 指定一个一次性的值供更改数据库时使用。

2) 停止当前操作,在 models.py 中给定默认值,然后再来migrate

 

我们选择第一个,输入 1

Select an option: 1

Please enter the default value now, as valid Python

The datetime and django.utils.timezone modules are available, so you can do e.g. timezone.now()

>>>timezone.now()

Migrations for 'news':

0002_auto_20150728_1232.py:

- Add field pub_date to article

- Add field update_time to article

 

这样是生成了一个对表进行更改的 py 文件在 news/migrations 文件夹中,我们要执行更改

python manage.py migrate python manage.py migrate news

 

7创建一个脚本,导入一些数据到数据库中

 

我们导入一些演示数据:

 

栏目: [<Column: 体育新闻>, <Column: 社会新闻>, <Column: 科技新闻>]

 

文章:[<Article: 体育新闻_1>, <Article: 体育新闻_2>, <Article: 体育新闻_3>, <Article: 体育新闻_4>, <Article: 体育新闻_5>, <Article: 体育新闻会>, <Article: 体育新闻_7>, <Article: 体育新闻_8>, <Article: 体育新闻_9>, <Article: 体育新闻_10>, <Article: 社会新闻_1>, <Article: 社新闻_2>,'...(remaining elements truncated)...']

 

create_demo_records.py

 

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Date     : 2015-07-28 20:38:38

# @Author  : Weizhong Tu (mail@tuweizhong.com)

# @Link     : http://www.tuweizhong.com

'''

create some records for demo database

'''

from minicms.wsgi import *

from news.models import Column, Article

def main():

  columns_urls = [

    ('体育新闻', 'sports'),

    ('社会新闻', 'society'),

    ('科技新闻', 'tech'),

  ]

  for column_name, url in columns_urls:

    c = Column.objects.get_or_create(name=column_name, slug=url)[0]

    # 创建 10 篇新闻

    for i in range(1, 11):

      article = Article.objects.get_or_create(

        title='{}_{}'.format(column_name, i),

        slug='article_{}'.format(i),

        content='新闻详细内容: {} {}'.format(column_name, i),

      )[0]

      article.column.add(c)

if __name__ == '__main__':

  main()

  print("Done!")

假设这个文件被保存为 create_demo_records.py (和 manage.py 放在一块,同一个文件夹下)

 

运行脚本导入数据:

 

python create_demo_records.py

Done!

 

终端上显示一个  Done!   OK,数据就导入成功!

 

      以上就是内容管理系统开发的一些简要操作,更多《Django教程》(实战篇)。

 

分享到:
评论

相关推荐

    基于DJango开发的仓库管理系统源码.zip

    基于DJango开发的仓库管理系统,软件架构:python 3.5、django 2.2、MySQL 基于DJango开发的仓库管理系统,软件架构:python 3.5、django 2.2、MySQL 基于DJango开发的仓库管理系统,软件架构:python 3.5、...

    一个用Python + Django开发的学生管理系统源码.zip

    一个用Python + Django开发的学生管理系统源码 一个用Python + Django开发的学生管理系统源码 一个用Python + Django开发的学生管理系统源码 一个用Python + Django开发的学生管理系统源码 一个用Python + ...

    Django开发的一个简单的员工管理系统源码.zip

    Django开发的一个简单的员工管理系统源码 Django开发的一个简单的员工管理系统源码 Django开发的一个简单的员工管理系统源码 Django开发的一个简单的员工管理系统源码 Django开发的一个简单的员工管理系统...

    使用Django框架开发的企业OA管理系统源码.zip

    使用Django框架开发的企业OA管理系统源码 使用Django框架开发的企业OA管理系统源码 使用Django框架开发的企业OA管理系统源码 使用Django框架开发的企业OA管理系统源码 使用Django框架开发的企业OA管理系统源码 ...

    Python基于Django的图书管理系统源码.zip

    Python基于Django的图书管理系统源码 Python基于Django的图书管理系统源码 Python基于Django的图书管理系统源码 Python基于Django的图书管理系统源码 Python基于Django的图书管理系统源码 Python基于...

    Django客户管理系统源码.zip

    Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统...

    Python基于Django学生宿舍管理系统源码.zip

    Python基于Django学生宿舍管理系统源码 Python基于Django学生宿舍管理系统源码 Python基于Django学生宿舍管理系统源码 Python基于Django学生宿舍管理系统源码 Python基于Django学生宿舍管理系统源码 Python基于...

    基于Django的图书管理系统源码+数据库.zip

    基于Django的图书管理系统源码+数据库,基于Django的图书管理系统源码+数据库基于Django的图书管理系统源码+数据库基于Django的图书管理系统源码+数据库基于Django的图书管理系统源码+数据库基于Django的图书管理...

    基于django的超市管理系统

    基于django的超市管理系统基于django的超市管理系统基于django的超市管理系统基于django的超市管理系统基于django的超市管理系统基于django的超市管理系统基于django的超市管理系统基于django的超市管理系统基于...

    Django的资产管理系统源码

    【Django的资产管理系统源码】是一套使用Python的Django框架编写的简易资产管理软件教程。这个系统虽然规模不大,但包含了实现一个完整管理系统的必要组件,是学习Django开发的良好实践案例。该项目构建在Django 2.2...

    Django开发的员工管理综合系统源码.zip

    Django开发的员工管理综合系统源码 Django开发的员工管理综合系统源码 Django开发的员工管理综合系统源码 Django开发的员工管理综合系统源码 Django开发的员工管理综合系统源码 Django开发的员工管理综合系统...

    基于Django开发的企业管理信息系统源码.zip

    基于Django开发的企业管理信息系统,包含了OA、销售管理、采购管理、库存管理、项目管理、文档管理以及组织管理模块。 基于Django开发的企业管理信息系统,包含了OA、销售管理、采购管理、库存管理、项目...

    python期末大作业基于Django的学生成绩管理系统源码.zip

    python期末大作业基于Django的学生成绩管理系统源码python期末大作业基于Django的学生成绩管理系统源码python期末大作业基于Django的学生成绩管理系统源码python期末大作业基于Django的学生成绩管理系统源码python...

    基于Django的交通设施运维管理系统设计

    基于Django的交通设施运维管理系统设计基于Django的交通设施运维管理系统设计基于Django的交通设施运维管理系统设计基于Django的交通设施运维管理系统设计基于Django的交通设施运维管理系统设计基于Django的交通设施...

    基于python+django学生信息管理系统设计与实现(含程序源码和毕业设计).zip

    基于python+django学生信息管理系统设计与实现(含程序源码和毕业设计).zip,基于python+django学生信息管理系统设计与实现(含程序源码和毕业设计).zip,基于python+django学生信息管理系统设计与实现(含程序源码和...

    Django入门新闻管理系统

    Django入门新闻管理系统。入门的,新手可以看下哈。。。 ================================================== Django的环境: Python的安装: python-2.7.1.msi Django的安装: 去djangoproject.com下载最新的版本...

    基于python +django 人事信息管理系统源码(高分项目).zip

    基于python +django 人事信息管理系统源码(高分项目).zip本资源中的源码都是经过本地编译过可运行的。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载...

    Python-基于Django开发的商场后端管理系统

    【Python-基于Django开发的商场后端管理系统】是一个典型的Web应用开发实例,它利用了Python的Django框架来构建一个功能完善的商场后台管理平台。这个系统为初学者提供了了解和学习Python后端开发,尤其是Django框架...

    基于python+django学生信息管理系统设计与实现(含程序源码和毕业设计)

    基于python+django学生信息管理系统设计与实现(含程序源码和毕业设计),基于python+django学生信息管理系统设计与实现(含程序源码和毕业设计),基于python+django学生信息管理系统设计与实现(含程序源码和毕业设计)...

Global site tag (gtag.js) - Google Analytics