Django项目开发举例之自定义管理界面(4)

1.自定义对象管理界面

为对象管理界面怎加过滤器

修改Question类的was_published_recently方法

$ vi models.py 

#-------------------------------------------------------------------------------------------------------------------

class Question(models.Model):

    question_text=models.CharField(max_length=200)

    pub_date=models.DateTimeField('data publlish')

    

    def _str_(self):

        return self.question_text

    

    def was_published_recently(self):

        return self.pub_date>=timezone.now-datetime.timedelta(days=1)

    was_published_recently.admin_order_field='pub_date'

    was_published_recently.boolean=True

    was_published_recently.short_description='Published recently?'

#-------------------------------------------------------------------------------------------------------------------


$ vi admin.py 

#-------------------------------------------------------------------------------------------------------------------

from django.contrib import admin

from .models import Question,Choice


# Register your models here.


class QuestionAdmin(admin.ModelAdmin):

    list_dispaly=('question_text','pub_date','was_published_recently')

    list_filter=['pub_date']


admin.site.register(Question,QuestionAdmin)

admin.site.register(Choice)

#-------------------------------------------------------------------------------------------------------------------


2.自定义项目模版

1)在manage.py同级目录下创建名为templates文件夹,在templates再创建admin文件夹

2)修改testproject/settings.py文件中template

#-------------------------------------------------------------------------------------------------------------------

TEMPLATES = [

    {

        'BACKEND': 'django.template.backends.django.DjangoTemplates',

        'DIRS': [os.path.join(BASE_DIR,'templates')],

        'APP_DIRS': True,

        'OPTIONS': {

            'context_processors': [

                'django.template.context_processors.debug',

                'django.template.context_processors.request',

                'django.contrib.auth.context_processors.auth',

                'django.contrib.messages.context_processors.messages',

            ],

        },

    },

]

#-------------------------------------------------------------------------------------------------------------------

3)拷贝模版文件

从Django安装的原目录下(目录为django/contrib/admin/templates)将模板页面的源文件admin/base_site.html拷贝到templates/admin文件夹里。

如果你找不到Django源文件在你系统上的位置,运行如下命令:

$ python -c "
import sys
sys.path = sys.path[1:]
import django
print(django.__path__)"
这样你就可以找到Django的安装目录,你可以通过find ~/ -name 'base_site.html'命令查找到该文件的具体位置。

4)修改模板文件

编辑该文件并替换{{ site_header|default:_('Django administration') }} (包括花括号)为你认为合适的自己站点的名称。编辑完成后应该类似下面的代码片段:

#-------------------------------------------------------------------------------------------------------------------

{% extends "admin/base.html" %}


{% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}


{% block branding %}

<h1 id="site-name"><a href="{% url 'admin:index' %}">myapp admiistration</a></h1>

{% endblock %}


{% block nav-global %}{% endblock %}


#-------------------------------------------------------------------------------------------------------------------

这样你就实现了项目模板的自定义,开看看你的应用管理界面有什么不同吧。

细心的读者将会问:由于DIRS默认是空的,Django是怎么找到默认的管理站点模板的?答案是,由于APP_DIRS设置为True,Django会自动地在每个应用包下面查找一个templates/子目录,留作备用。(别忘了,django.contrib.admin 也是一个应用)。

3.自定义管理界面的首页

默认情况下,首页面显示所有位于INSTALLED_APPS中且已经使用管理站点应用注册过的应用,这些应用按照字母顺序进行显示。需要自定义的模板文件是 admin/index.html。 (就像之前对admin/base_site.html做的那样 —— 即从默认的目录拷贝到你自定义的目录中的那个文件)。编辑这个文件,你将看到它有一个叫做app_list的变量。这个变量包含安装的所有Django应用。 




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值