django 后台管理搭建

1、 创建项目 minicms 和 应用 news

django-admin startproject minicms
cd minicms
python manage.py startapp news

添加 news 到 settings.py 中的 INSTALLED_APPS 中。

2、  news 中的栏目和每篇文章相关的字段

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

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

我们假设一篇文章只有一个作者(文章和作者是多对一的关系),一篇文章可以属于多个栏目(栏目和文章是多对多的关系)

为了用到更多的情况,我们假设作者可以为空,栏目不能为空。

3、开写 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(u'栏目名称', max_length=256)
    slug = models.CharField(u'栏目网址', max_length=256, db_index=True)
    intro = models.TextField(u'栏目简介', 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(u'Column', verbose_name='归属栏目')
 
    title = models.CharField(u'标题', max_length=256)
    slug = models.CharField(u'网址', max_length=256, db_index=True)
 
    author = models.ForeignKey(u'auth.User', blank=True, null=True, verbose_name='作者',on_delete=models.CASCADE)
    content = models.TextField(u'内容', default='', blank=True)
 
    published = models.BooleanField(u'正式发布', default=True)

    pub_date = models.DateTimeField(u'发表时间', auto_now_add=True, editable=True)
    update_time = models.DateTimeField(u'更新时间', auto_now=True, null=True)
     
    def __str__(self):
        return self.title
 
    class Meta:
        verbose_name = '教程'
        verbose_name_plural = '教程'

4、创建数据库

python manage.py makemigrations news
python manage.py migrate


5、 create_demo_records.py (和 manage.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!")

6、运行脚本 导入数据:

python create_demo_records.py


7、完善后台的功能,在后台添加,编辑,删除数据

更改 news/admin.py

from django.contrib import admin
 
from .models import Column, Article
 
 
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(Article, ArticleAdmin)

8、创建一个超级管理员

python manage.py createsuperuser

9、打开开发服务器,访问后台网址

python manage.py runserver
还可以指定端口 python manage.py runserver 8002
也可以监视所有本机IP, python manage.py runserver 0.0.0.0:8001

10、后台页面


一个简单的后台管理就建好了。

参考:自强学堂Django 教程


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值