zoukankan      html  css  js  c++  java
  • Django1.8教程——从零开始搭建一个完整django博客(二)

    在上一节中,我们已经创建了一个Django模型Post,并使Post模型与数据库同步。这一节中,我们将介绍Django管理站点,通过Django管理站点来管理我们创建的Post模型实例。

    为你的模型创建一个控制管理站点

    好了,我们已经定义了一个post模型,现在,我们将要创建一个简单的管理站点,来管理post实例。Django自带的管理界面是一个十分强大的内容编辑器。Django管理站点按照你模型的元数据动态建立,并且提供一个方便编辑内容的接口。同样,你也可以在管理站点内自定义如何展现你的模块。

    需要记住的一点是django.contrib.admin已经包含在INSTALLED_APPS设置中,这就是为什么我们不需要再手动添加它的原因。

    创建管理员权限用户

    首先,我们需要创建一个管理员权限用户来登录管理站点,运行下面命令:

    python manage.py createsuperuser
    

    你会看到以下内容,并提示你输入用户名、e-mail,密码:

    Username (leave blank to use 'admin'): admin
    Email address: admin@admin.com
    Password: ********
    Password (again): ******** Superuser created successfully.
    

    Django管理站点

    现在,运行开发服务器(python manage.py runserver),在浏览器打开http://127.0.0.1:8000/admin/,你就可以看见管理站点登录界面。

    输入你刚刚建立的管理员用户名和密码,登录管理站点,你会看见管理站点的首页。

    现在你所看见的User和Group模块是Django的认证框架,这是在INSTALLED_APPS中的django.contrib.auth设置的。如果你打开Users,你会看见刚刚创建的管理员。blog应用中的Post模型和User模型之间有关联关系。这段关联被定义在Post模型中的author属性。

    将你的模型添加到管理站点

    现在将我们创建的blog应用中的Post模型添加至管理站点。编辑blog应用中的admin.py文件:

    from django.contrib import admin 
    from .models import Post 
    admin.site.register(Post)
    

    现在,重新加载管理站点,你就可以看见你的Post模型已经添加至管理站点。

    这很容易,对吗?当你在Django管理站点登记一个模型,就会得到一个友好的用户界面:允许你生成对象列表;以及非常容易的编辑、创建、删除对象。

    Django针对不同的字段使用不同的表格插件,像DateTimeField,在管理站点中展示一个类似JavaScript日历插件的界面。将所有内容添加完毕之后,点击保存按钮。站点就会跳转到post列表页,并且给出一个”你已成功添加post“的提示。

    自定义管理站点中的模块显示

    现在我们将看到如何自定义管理站点。编辑你的blog应用中的admin.py文件:

    from django.contrib import admin 
    from .models import Post
    
    class PostAdmin(admin.ModelAdmin):
        list_display = ('title', 'slug', 'author', 'publish', 'status') 
    	admin.site.register(Post, PostAdmin)
    

    我们告诉Django管理站点,我们使用继承自ModelAdmin的自定义类,来将我们的Post模型注册到管理站点。在这个自定义类中,我们定义了如何展示Post模型。list_display属性允许你设置你想要在管理对象列表页面显示的模型字段。

    现在我们为管理站点添加其他选项:

    class PostAdmin(admin.ModelAdmin):     
    	list_display = ('title', 'slug', 'author', 'publish', 'status')
        list_filter = ('status', 'created', 'publish', 'author')     search_fields = ('title', 'body')     
    	prepopulated_fields = {'slug': ('title',)}     
    	raw_id_fields = ('author',)     
    	date_hierarchy = 'publish'     
    	ordering = ['status', 'publish']
    

    重新加载管理站点,可以看到:

    你可以看到post对象列表页面中显示出你在list_display中定义展示的字段。

    列表页包括一个右边栏,允许你通过在list_fliter定义的过滤器字段来筛选文章。

    在页面上出现了一个搜索栏。这是因为我们已经使用search_fields属性定义了可搜索字段。

    搜索栏下面一栏,由date_hierarchy属性定义,提供一个基于日期层次的快速指向。

    您还可以看到,post对象按照Status和Publish排序,你还可以使用ordering属性定义默认的排序方式。

    现在点击Add post链接,进入post对象编辑界面。当你把新创建的post对象的标题输入title字段的时候,你会发现,slug字段自动填充了相应的内容。这是因为我们用prepopulated_fields属性告诉Django,slug是title的关联字段。另外,现在作者字段将显示一个查找控件,因为当你的注册用户成百上千的时候,从下拉列表选择十分的不方便。

    看看,我们只用了短短几行代码,就在管理站点中定义了模型的管理方式。定制和扩展Django管理站点的方法还有很多,在后面的章节,我们将进一步为你揭晓。

    原文链接:http://www.landsblog.com/blog/content/djangoexamplemanage
    更多教程:http://www.landsblog.com/blog/tag/django

  • 相关阅读:
    Django框架学习-Model进阶用法
    jquery获取元素的所有宽高(包括内边距和外边距)
    django group_by
    jquery如何判断滚动条滚到页面底部并执行事件
    web ajax跨域问题解决方案
    django ckeditor的使用方法
    django自带User管理中添加自己的字段方法
    如何在django中使用多个数据库
    使用django-mssql时候报pythoncom模块不存在
    centos命令行常用操作
  • 原文地址:https://www.cnblogs.com/Lands-ljk/p/5719300.html
Copyright © 2011-2022 走看看