Django 后台
与后台相关文件:每个app中的 admin.py 文件与后台相关。
一,新建一个 名称为 HelloDjango 的项目
django-admin.py startproject HelloDjango
二,新建一个 叫做 blog 的app
# 进入 HelloDjango 文件夹
cd HelloDjango
# 创建 blog 这个 app
python manage.py startapp blog
三,修改 blog 文件夹中的 models.py
# 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中
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
)
提示:INSTALLED_APPS 是一个元组,每次加入新的app的时候,在后面都加一个逗号,这是一个好习惯。
五,同步所有的数据表
注意:Django 1.7及以上的版本需要用以下命令
python manage.py makemigrations
python manage.py migrate
=====>
如果是 Django 不主动提示创建管理员(Django 1.9不提示)用下面的命令创建一个帐号1、首先我们要新建一个用户名,用来登陆管理网站,可以使用如下命令:python manage.py createsuperuser2、输入想要使用的用户名:Username (leave blank to use 'administrator'): user013、输入email:Email address: (在这里输入你的自己的邮箱帐号)4、输入密码,需要输入两次,并且输入密码时不会显示出来:Password:Password (again):当两次密码都相同的时候,就会提示超级帐号创建成功。Superuser created successfully.5、运行服务:python manage.py runserver6、浏览器地址栏输入:http://127.0.0.1:8000/admin
六,修改 admin.py
进入 blog 文件夹,修改 admin.py 文件(如果没有新建一个),内容如下
from django.contrib import admin
from .models import Article
admin.site.register(Article)
只需要这三行代码,我们就可以拥有一个强大的后台!
提示:urls.py中关于 admin的已经默认开启
七,打开 开发服务器
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 __unicode__( self ): # 在Python3中用 __str__ 代替 __unicode__ #新添加; return self .title |
我们加了一个 __unicode__ 函数,刷新后台网页,会看到:
所以推荐定义 Model 的时候 写一个 __unicode__ 函数(或 __str__函数)