与后台相关的文件:每个app中的admin.py文件与后台相关
下面是一个可以在后台添加博客的栗子:
第一步:新建一个 zjyd_admin项目
django-admin startproject zjyd_admin
第二步:创建一个blog的app
python manage.py startapp blog
第三步:讲blog加入到settings.py中的INSTALLED_APPS中
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
]
第四步:修改blog文件夹中的models.py
from django.db import models
# Create your models here.
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)
第五步:同步所有的数据表
# 进入包含有 manage.py 的文件夹
python manage.py makemigrations
python manage.py migrate
第六步:修改admin.py
进入 blog 文件夹,修改 admin.py 文件(如果没有新建一个),内容如下
from django.contrib import admin
from .models import Article
# Register your models here.
admin.site.register(Article)
只需要这三行代码,我们就可以拥有一个强大的后台!
提示:urls.py中关于 admin的已经默认开启
urlpatterns = [
url(r'^admin/', admin.site.urls),
]
第七步:打开服务器
python manage.py runserver
# 如果提示 8000 端口已经被占用,可以用 python manage.py runserver 8001 以此类推
访问 http://localhost:8000/admin/ 可以看到:
Paste_Image.png
输入账号密码:
Paste_Image.png
点击 Articles,动手输入 添加几篇文章,就可以看到:
Paste_Image.png
我们会发现所有的文章都是叫 Article object,这需要我们修改下blog中的models.py:
from django.db import models
# Create your models here.
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 #这两句
我们新增了一个 str 函数,用于返回文章标题。刷新页面,结果:
Paste_Image.png
所以推荐在定义Model的时候,写一个 str函数。
八,在列表显示与字段相关的其它内容
如果我们还想显示一些其他的字段:
from django.contrib import admin
from .models import Article
# Register your models here.
class ArticleAdmin(admin.ModelAdmin):
list_display = ('title','pub_date','update_time',)
admin.site.register(Article,ArticleAdmin)
结果:
Paste_Image.png