Django学习记录之Django 1.8 教程(我只是官网的搬运工)Tutorial Part 2

9 篇文章 0 订阅
8 篇文章 0 订阅

Part 2
第一步:创建一个admin用户给你的app

$python manage.py createsuperuser
usesrname: 输入一个用户如 admin
Email addre:admin@example.com
Password: **********
Password (again): *********
Superuser created successfully.

好了,成功创建啦
现在看看你的后台咯
运行

$python manage.py runserver

打开:http://127.0.0.1:8000/admin/
你会看到:
Django admin login screen

唔。。。有点丑哦
logging。。。
Django admin index page

第二步:修饰这个后台
打开 polls/admin.py file 并且edit

from django.contrib import admin
from .models import Question

admin.site.register(Question)

Django admin index page, now with polls displayed

可以看到Question 已经被我们 registered 在这个page
点击 “Questions”
Polls change list page
点击“What‘s up ” edit 问题
 Editing form for question object
接下来
是时候定制后台的风格了
编辑文件 polls/admin.py

from django.contrib import admin
from .models import Question

class QuestionAdminadmin.ModelAdmin):
fields = ['pub_date','question_text']

admin.site.register(Question,QuestionAdmin)

Fields have been reordered

创建了一个模型管理类并将它作为 第二个参数 传给 admin.site.register()

再次编辑polls/admin.py

from django.contrib import admin

from .models import Question


class QuestionAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,               {'fields': ['question_text']}),
        ('Date information', {'fields': ['pub_date']}),
    ]

admin.site.register(Question, QuestionAdmin)

Form has fieldsets now

你还可以定义一个HTML类分配给任一字段。

from django.contrib import admin

from .models import Question


class QuestionAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,               {'fields': ['question_text']}),
        ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
    ]

admin.site.register(Question, QuestionAdmin)

Fieldset is initially collapsed

如图,可以看到Date Information 被隐藏了。成功调用了HTML类

接下来该加入Choice了
继续编辑polls/admin.py

from django.contrib import admin

from .models import Choice, Question
# ...
admin.site.register(Choice)

Choice admin page

点一下加号。
可以看到弹出一个网页link to Question

继续编辑。。

from django.contrib import admin

from .models import Choice, Question


class ChoiceInline(admin.StackedInline):
    model = Choice
    extra = 3


class QuestionAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,               {'fields': ['question_text']}),
        ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
    ]
    inlines = [ChoiceInline]

admin.site.register(Question, QuestionAdmin)

Add question page now has choices on it

出现3个选择。//你定义的

但是看起来有点丑用这种stack式的list
嗯,改一下变成横向的:

class ChoiceInline(admin.TabularInline):
    #...

只需把admin.StackedInline改为如上的形式就可以实现了:
Add question page now has more compact choices

继续编辑!

class QuestionAdmin(admin.ModelAdmin):
# ...
list_display = ('question_text', 'pub_date')

嗯还不够,再加一个栏目

class QuestionAdmin(admin.ModelAdmin):
    # ...
    list_display = ('question_text', 'pub_date', 'was_published_recently')

好了让我们刷新下看看
Polls change list page, updated

三个栏目出现了

接下来,是时候改改栏目样式了
编辑 polls/models.py

class Question(models.Model):
    # ...
    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?'

加上个过滤器吧!
edit polls/admin.py

list_filter = ['pub_date']

Polls change list page, updated
好像还少了点什么!

加行搜索栏吧

search_fields = ['question_text']

第三步:定制你的项目模板

首先,在你的项目目录(包含manage.py的那个目录)下建立一个名为 templates 的文件夹

打开你的设置文件 mysite/settings.py

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',
            ],
        },
    },
]

现在创建一个目录名叫 admin 放在templates里面
并从你自己的django/contrib/admin/templates 目录里copy base_site.html 到admin目录里面

tips:
你的源文件在哪呢?
你可以通过如下命令查看

$ python -c "
import sys
sys.path = sys.path[1:]
import django
print(django.__path__)"

现在对这个html文件进行修改

{% block branding %}
Polls Administration
{% endblock %}

仅仅是改变了中的内容为Polls Administration{{ site_header|default:_(‘Django administration’) }}!
ps:
由于网页原因没有显示出来html文件。。。勿介意。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值