一,安装软件,开发minicms项目
1.1创建项目minicms和应用新闻
django-admin.py startproject minicms
cd minicms
python3 manage.py startapp新闻
添加新闻到settings.py中的INSTALLED_APPS中。
1.2 规划新闻中的栏目和每篇文章相关的字段
栏目:名称,网址,简介等
文章:标题,作者,网址,内容等
我们假设一篇文章只有一个作者(文章和作者是多对一的关系),一篇文章可以属于多个栏目(状语从句:栏目文章的英文多对多的关系)
为了用到更多的情况,我们假设作者可以为空,栏目不能为空。
开写models.py# - * - 编码:utf-8 - * -
从__future__导入unicode_literals
从django.db导入模型
从django.utils.encoding导入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):
返回self.name
class Meta:
verbose_name ='栏目'
verbose_name_plural ='栏目'
ordered = ['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 ='作者',on_delete = models.CASCADE)
content = models.TextField('内容',default ='',blank = True)
pub_date = models.DateTimeField('发表时间',auto_now_add = True,editable = True)
update_time = models.DateTimeField('更新时间',auto_now = True,null = True)
published = models.BooleanField('正式发布',default = True)
def __str __(self):
返回self.title
class Meta:
verbose_name ='教程'
verbose_name_plural ='教程'
1.3 创建数据库
python3 manage.py makemigrations消息
python3 manage.py迁移
1.4 创建一个脚本,导入一些数据到数据库中我们导入一些演示数据:
栏目:[<列:体育新闻>,<栏目:社会新闻>,<栏目:科技新闻>]
文章:[<文章:体育新闻_1>,<文章:体育新闻_2>,<文章:体育新闻_3>,<文章:体育新闻_4>,<文章:体育新闻_5>,<文章:体育新闻会>,<文章:体育新闻_7>,<文章:体育新闻_8>,<文章:体育新闻_9>,<文章:体育新闻_10>,<文章:社会新闻_1> ,<Article:社新闻_2>,'...(剩余元素被截断)...']
开写create_demo_records.py
#!/ usr / bin / env python
# - * - 编码:utf-8 - * -
#@日期:2015-07-28 20:38:38
#@作者:魏忠忠(mail@tuweizhong.com)
#@Link:http://www.tuweizhong.com
“””
为演示数据库创建一些记录
“””
来自minicms.wsgi import *
从news.models导入栏,文章
def main():
columns_urls = [
('体育新闻','体育'),
('社会新闻','社会'),
('科技新闻','tech'),
]
对于column_name,column_urls中的url:
c = Column.objects.get_or_create(name = column_name,slug = url)[0]
#创建10篇新闻
因为我在范围内(1,11):
article = Article.objects.get_or_create(
title ='{} _ {}'。format(column_name,i),
蛞蝓= '文章_ {}'。格式(I),
content ='新闻详细内容:{} {}'。format(column_name,i)
)[0]
article.column.add(c)中
如果__name__ =='__main__':
主要()
打印( “DONE!”)
运行脚本导入数据:
python3 create_demo_records.py
1.5完善后台的功能,在后台添加,编辑,删除数据
更改新闻/ admin.py
from django.contrib import admin
来自.models导入栏,文章
class ColumnAdmin(admin.ModelAdmin):
list_display =('name','slug','intro',)
class ArticleAdmin(admin.ModelAdmin):
list_display =('title','slug','author','pub_date','update_time')
admin.site.register(Column,ColumnAdmin)
admin.site.register(文章,文章管理员)
创建一个超级管理员(如果你没有后台帐户和密码的话)
python3 manage.py createsuperuser
搜索IP
python3 manage.py runserver