Django框架使用流程(四)自定义管理页面及路由与视图

一、页面管理

(1.运行服务器 2.站点简单管理)请看上回分解

3,自定义管理页面

Django提供了admin.ModelAdmin类
通过定义ModelAdmin的子类,来定义模型在Admin界面的显示方式
from django.contrib import admin
from .models import Book,Hero
# Register your models here.
class BookAdmin(admin.ModelAdmin):
# list_display:显示字段,可以点击列头进行排序
list_display = [‘id’, ‘title’, ‘pub_date’]
# list_filter:过滤字段,过滤框会出现在右侧
list_filter = [‘title’]
# search_fields:搜索字段,搜索框会出现在上侧
search_fields = [‘title’]
# list_per_page:分页,分页框会出现在下侧
list_per_page = 2
admin.site.register(Book,BookAdmin)
admin.site.register(Hero)

4,接下来实现关联注册

from django.contrib import admin
from .models import Book,Hero

Register your models here.

class HeroInline(admin.StackedInline):
model = Hero
# 关联个数
extra = 1
class BookAdmin(admin.ModelAdmin):
# list_display:显示字段,可以点击列头进行排序
list_display = [‘id’, ‘title’, ‘pub_date’]
# list_filter:过滤字段,过滤框会出现在右侧
list_filter = [‘title’]
# search_fields:搜索字段,搜索框会出现在上侧
search_fields = [‘title’]
# list_per_page:分页,分页框会出现在下侧
list_per_page = 2
# 再添加书的时候可以额外添加英雄
inlines = [HeroInline]
class HeroAdmin(admin.ModelAdmin):
list_display = [‘id’, ‘name’, ‘gender’,‘content’]
# list_filter:过滤字段,过滤框会出现在右侧
list_filter = [‘name’]
# search_fields:搜索字段,搜索框会出现在上侧
search_fields = [‘name’]
# list_per_page:分页,分页框会出现在下侧
list_per_page = 2
admin.site.register(Book,BookAdmin)
admin.site.register(Hero,HeroAdmin)

5,更改后台对象列名显示

比如想要将hcontent改为英雄技能

第一步在HeroInfo类中定义函数
def skill(self):
return self.content
skill.short_description = ‘英雄技能’
第二步在HeroAdmin中修改显示
list_display = [‘id’, ‘name’, ‘gender’,‘skill’]

admin.py文件 具体代码参考

from django.contrib import admin

# Register your models here.
# django自带的后台管理操作需要在此处实现

# 注册自己需要管理的模型 Book Hero
from .models import Book,Hero


from django.contrib import admin
from django.contrib.admin import ModelAdmin


class HeroInline(admin.StackedInline):
    """
    定义关联类

    """
    model = Hero
    extra = 1


class HeroAdmin(ModelAdmin):
    """
    定义模型管理类
    通过该类可以修改后台页面
    """
    # 更改后端显示列
    list_display = ('name', 'gender', 'book')
    # 每页显示一个 分页会出现在下侧
    list_per_page = 5
    # 定义搜索字段 (包含标题 价格) 搜索框会出现在上侧
    search_fields = ('name', 'gender')
    # 指定过滤字段 过滤框会出现在右侧
    list_filter = ('name', 'gender', 'book')


class BookAdmin(ModelAdmin):
    """
    定义模型管理类
    通过该类可以修改后台页面
    """
    # 更改后端显示列
    list_display = ('title','price','pub_date')
    # 每页显示一个
    list_per_page = 10
    # 定义搜索字段 (包含标题 价格)
    search_fields = ('title','price')
    # 指定过滤字段
    list_filter = ('title','price','pub_date')

    # 通过指定关联类进行关联
    inlines = [HeroInline]


admin.site.register(Book, BookAdmin)
admin.site.register(Hero, HeroAdmin)

管理页面展示

Django框架使用流程(四)自定义管理页面及路由与视图_第1张图片

二、路由与视图

1,视图说明

在django中,视图对WEB请求进行回应
视图接收reqeust对象作为第一个参数,包含了请求的信息,改参数必不可少,后面可根据需求添加
视图函数就是一个Python函数,被定义在views.py中
from django.http import HttpResponse
def index(request):
return HttpResponse(“index”)
def detail(request,id):
return HttpResponse(“detail %s” % id)
定义完成视图后,需要配置urlconf,否则无法处理请求

2,URLconf说明

在Django中,定义URLconf包括正则表达式、视图两部分
Django使用正则表达式匹配请求的URL,一旦匹配成功,则调用应用的视图
注意:只匹配路径部分,即除去域名、参数后的字符串
在test1/urls.py插入booktest,使主urlconf连接到booktest.urls模块

urlpatterns列表中来配置 url,每一个列表项就是一个由url函数的调用。
一个project中如果有多个app,为避免url管理可能的混乱,在项目的urls.py用include方法包含myapp中的urls。

3,路由与视图具体操作

1.在主路由内添加应用的路由
Django框架使用流程(四)自定义管理页面及路由与视图_第2张图片
2.在应用booktest目录下,创建urls.py文件 模仿主文件下的urls.py 进行如下编写。
Django框架使用流程(四)自定义管理页面及路由与视图_第3张图片
3.在views.py文件内写入视图函数。
Django框架使用流程(四)自定义管理页面及路由与视图_第4张图片
4.打开服务器后,进入匹配好的路由,查看结果。
Django框架使用流程(四)自定义管理页面及路由与视图_第5张图片

你可能感兴趣的:(python,数据库)