Django-后台

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

1.新建admin项目

django-admin startproject admin

2.新建app

#进入admin文件夹
cd admin

#创建app:blog
python manage.py startapp blog

将blog加入settings.py文件。

3.新建model

在models.py中,建立Article类

# 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

4.同步数据表

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

建立了Article的数据表。

创建管理员

python manage.py createsuperuser

5.注册模型

修改admin.py文件

from django.contrib import admin
from .models import Article


admin.site.register(Article)

6.打开服务器

python manage.py runserver

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

7.在列表显示相关内容

在admin.py中,修改如下

from django.contrib import admin
from .models import Article

class 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 admin
from .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 makemigrations
python 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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值