与后台相关文件:每个app中的 admin.py 文件与后台相关。
一,新建一个 名称为 zqxt_admin 的项目
1
|
django-admin.py startproject zqxt_admin |
二,新建一个 叫做 blog 的app
1 2 3 4 5 |
# 进入 zqxt_admin 文件夹 cd zqxt_admin
扫描二维码关注公众号,回复:
4534848 查看本文章
# 创建 blog 这个 app python manage.py startapp blog |
注意:不同版本的 Django 创建 project 和 app 出来的文件会有一些不同
三,修改 blog 文件夹中的 models.py
1 2 3 4 5 6 7 8 9 10 |
# coding:utf-8 from django.db import models class Article(models.Model): title = models.CharField(u '标题' , max_length = 256 ) content = models.TextField(u '内容' ) pub_date = models.DateTimeField(u '发表时间' , auto_now_add = True , editable = True ) update_time = models.DateTimeField(u '更新时间' ,auto_now = True , null = True ) |
四,把 blog 加入到settings.py中的INSTALLED_APPS中
1 2 3 4 5 6 7 8 9 10 |
INSTALLED_APPS = ( 'django.contrib.admin' , 'django.contrib.auth' , 'django.contrib.contenttypes' , 'django.contrib.sessions' , 'django.contrib.messages' , 'django.contrib.staticfiles' , 'blog' , ) |
提示:INSTALLED_APPS 是一个元组,每次加入新的app的时候,在后面都加一个逗号,这是一个好习惯。
五,同步所有的数据表
1 2 3 |
# 进入包含有 manage.py 的文件夹 python manage.py makemigrations python manage.py migrate |
1 |
python manage.py createsuperuser #按照提示输入账号与密码 |
六,修改 admin.py
进入 blog 文件夹,修改 admin.py 文件(如果没有新建一个),内容如下
from django.contrib import admin
from .models import Article
admin.site.register(Article)
七,打开 开发服务器只需要这三行代码,我们就可以拥有一个强大的后台!
1 2 |
python manage.py runserver # 如果提示 8000 端口已经被占用,可以用 python manage.py runserver 8001 以此类推 |
访问 http://localhost:8000/admin/ 输入设定的帐号和密码, 就可以看到:
点击 Articles,动手输入 添加几篇文章,就可以看到:
我们会发现所有的文章都是叫 Article object,这样肯定不好,比如我们要修改,如何知道要修改哪个呢?
我们修改一下 blog 中的models.py
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# coding:utf-8 from django.db import models class Article(models.Model): title = models.CharField(u '标题' , max_length = 256 ) content = models.TextField(u '内容' ) 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 |
刷新后台网页,会看到:
所以推荐定义 Model 的时候 写一个 __str__函数
八,在列表显示与字段相关的其它内容
后台已经基本上做出来了,可是如果我们还需要显示一些其它的fields,如何做呢?
在admin.py中
1 2 3 4 5 6 7 8 9 10 11 12 13 |
from django.contrib import admin from .models import Article, Person class ArticleAdmin(admin.ModelAdmin): list_display = ( 'title' , 'pub_date' , 'update_time' ,) class PersonAdmin(admin.ModelAdmin): list_display = ( 'full_name' ,) admin.site.register(Article, ArticleAdmin) admin.site.register(Person, PersonAdmin) |