django的后臺(tái)我們只要加少些代碼,就可以實(shí)現(xiàn)強(qiáng)大的功能。
與后臺(tái)相關(guān)文件:每個(gè)app中的 admin.py 文件與后臺(tái)相關(guān)。
下面示例是做一個(gè)后臺(tái)添加博客文章的例子:
一,新建一個(gè) 名稱為 zqxt_admin 的項(xiàng)目
1 | django-admin.py startproject zqxt_admin
|
二,新建一個(gè) 叫做 blog 的app
1 2 3 4 5 | cd zqxt_admin
python manage.py startapp blog
|
注意:不同版本的 Django 創(chuàng)建 project 和 app 出來的文件會(huì)有一些不同
三,修改 blog 文件夾中的 models.py
1 2 3 4 5 6 7 8 9 10 | from django.db import models
class Article(models.Model):
title = models.CharField(u '標(biāo)題' , max_length = 256 )
content = models.TextField(u '內(nèi)容' )
pub_date = models.DateTimeField(u '發(fā)表時(shí)間' , auto_now_add = True , editable = True )
update_time = models.DateTimeField(u '更新時(shí)間' ,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 是一個(gè)元組,每次加入新的app的時(shí)候,在后面都加一個(gè)逗號(hào),這是一個(gè)好習(xí)慣。
五,同步所有的數(shù)據(jù)表
1 2 3 4 5 6 | python manage.py makemigrations
python manage.py migrate
注意:Django 1.6.x 及以下的版本需要用以下命令
python manage.py syncdb
|
可以看到:
Creating tables ...
Creating table django_admin_log
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_session
Creating table blog_article
You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'tu'): tu
Email address:
Password:
Password(again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
如果是 Django 不主動(dòng)提示創(chuàng)建管理員(Django 1.9不提示)用下面的命令創(chuàng)建一個(gè)帳號(hào)
1 | python manage.py createsuperuser
|
六,修改 admin.py
進(jìn)入 blog 文件夾,修改 admin.py 文件(如果沒有新建一個(gè)),內(nèi)容如下
1 2 3 4 5 | from django.contrib import admin
from .models import Article
admin.site.register(Article)
|
只需要這三行代碼,我們就可以擁有一個(gè)強(qiáng)大的后臺(tái)!
提示?urls.py中關(guān)于 admin的已經(jīng)默認(rèn)開啟,如果沒有,參考這里。
七,打開 開發(fā)服務(wù)器
1 2 | python manage.py runserver
|
訪問 http://www.tjdsmy.cn:8000/admin/ 輸入設(shè)定的帳號(hào)和密碼, 就可以看到:

點(diǎn)擊 Articles,動(dòng)手輸入 添加幾篇文章,就可以看到:

我們會(huì)發(fā)現(xiàn)所有的文章都是叫 Article object,這樣肯定不好,比如我們要修改,如何知道要修改哪個(gè)呢?
我們修改一下 blog 中的models.py
1 2 3 4 5 6 7 8 9 10 11 12 13 | from django.db import models
class Article(models.Model):
title = models.CharField(u '標(biāo)題' , max_length = 256 )
content = models.TextField(u '內(nèi)容' )
pub_date = models.DateTimeField(u '發(fā)表時(shí)間' , auto_now_add = True , editable = True )
update_time = models.DateTimeField(u '更新時(shí)間' ,auto_now = True , null = True )
def __unicode__( self ):
return self .title
|
我們加了一個(gè) __unicode__ 函數(shù),刷新后臺(tái)網(wǎng)頁,會(huì)看到:

所以推薦定義 Model 的時(shí)候 寫一個(gè) __unicode__ 函數(shù)(或 __str__函數(shù))