咨询热线:4006-75-4006
售前:9:00-23:30 备案:9:00-18:00 技术:7*24h
django的后台我们只要加少些代码,就可以实现强大的功能。
与后台相关文件:每个app中的 admin.py 文件与后台相关。
下面示例是做一个后台添加博客文章的例子:
1 | django-admin.py startproject zqxt_admin |
1 2 3 4 5 | # 进入 zqxt_admin 文件夹 cd zqxt_admin # 创建 blog 这个 app python manage.py startapp blog |
注意:不同版本的 Django 创建 project 和 app 出来的文件会有一些不同
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 ) |
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 4 5 6 | # 进入包含有 manage.py 的文件夹 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 不主动提示创建管理员(Django 1.9不提示)用下面的命令创建一个帐号
1 | python manage.py createsuperuser |
进入 blog 文件夹,修改 admin.py 文件(如果没有新建一个),内容如下
1 2 3 4 5 | from django.contrib import admin from .models import Article admin.site.register(Article) |
只需要这三行代码,我们就可以拥有一个强大的后台!
提示?urls.py中关于 admin的已经默认开启,如果没有,参考这里。
1 2 | python manage.py runserver # 如果提示 8000 端口已经被占用,可以用 python manage.py runserver 8001 以此类推 |
访问 http://www.landui.com: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__函数)