Django-后台

来源:互联网 发布:防火墙软件测试 编辑:程序博客网 时间:2024/05/16 17:01

Django后台通过编辑每个app的admin.py文件实现。

1.新建admin项目

django-admin startproject admin

2.新建app

#进入admin文件夹cd admin#创建app:blogpython manage.py startapp blog

将blog加入settings.py文件。

3.新建model

在models.py中,建立Article类

# coding:utf-8from 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

4.同步数据表

# 进入包含有 manage.py 的文件夹python manage.py makemigrationspython manage.py migrate

建立了Article的数据表。

创建管理员

python manage.py createsuperuser

5.注册模型

修改admin.py文件

from django.contrib import adminfrom .models import Articleadmin.site.register(Article)

6.打开服务器

python manage.py runserver

访问 http://localhost:8000/admin/, 输入设定的帐号和密码。可以在后天增加
编辑Article内容。

7.在列表显示相关内容

在admin.py中,修改如下

from django.contrib import adminfrom .models import Articleclass ArticleAdmin(admin.ModelAdmin):    list_display = ('title','pub_date','update_time',)admin.site.register(Article,ArticleAdmin)

list_display就是配置要显示的字段的。

显示费字段内容,或字段相关的内容,比如,对于Person类

class Person(models.Model):    first_name = models.CharField(max_length=50)    last_name = models.CharField(max_length=50)    def my_property(self):        return self.first_name + ' ' + self.last_name    my_property.short_description = "Full name of the person"    full_name = property(my_property)

property将方法my_property转变为属性字段

在admin.py中

from django.contrib import adminfrom .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)

如果修改了models.py中的字段,就要更改数据表,

python manage.py makemigrationspython manage.py migrate

8.定制搜索功能

在admin.py中修改如下

class PersonAdmin(admin.ModelAdmin):    list_display = ('full_name')    search_fields = ('full_name',)    def get_search_results(self, request, queryset, search_term):        queryset, use_distinct = super(PersonAdmin, self).get_search_results(request, queryset, search_term)        try:            search_term_as_int = int(search_term)            queryset |= self.model.objects.filter(age=search_term_as_int)        except:            pass        return queryset, use_distinct

queryset是默认的结果,search_term是搜索关键词

9.其他功能

Django还有很多后台功能,比如
1. 定制加载的列表, 根据不同的人显示不同的内容列表,比如输入员只能看见自己输入的,审核员能看到所有的草稿,这时候就需要重写get_queryset方法
2. 修改保存时的一些操作,可以检查用户,保存的内容等,比如保存时加上添加人
3. 删除时做一些处理

参考:
自强学堂
官方文档

0 0
原创粉丝点击