Django URL&定制admin

一、URL

路由匹配

# 使用url给视图函数传参数
# 在url配置中将正则部分小括号括起来,比如:
url(r'^time/plus/(\d{1,2})/$', views.hours_ahead)
# 如果有多个参数则用/隔开,参数需要用分组,比如:
url(r"^time/plus/(\d{1,2})/(\d{1,2})/$",views.hours_ahead)
# 给参数命名,使用正则分组的别名,比如:
ulr(r'^time/plus/(?P<time1>\d{1,2})/(?P<time2>\d{1,2})/$',views.hours_ahead)
# 使用分组别名之后,视图函数必须用分组的别名,但是位置可以不固定。

# 给url取别名,那么在使用url的地方可以使用别名。比如:
url(r"^buy/$", views.buy, name='buy')
url(r"^login/$", view.login, name='login')

反向解析

# 在视图函数中,反向解析url:
from django.shortcuts import render, redirect
from django.urls import reverse

def buy(request):
	return redirect(reverse("index"))
	return redirect(reverse('detail', args=[2]))
	return redirect(reverse("detail", kwargs={"id": 2}))

# 在templates中,使用别名:
{% url 'detail' stu.id %}
# 使用命名空间:
# 在工程的urls.py文件中,在include时,可以指定命名空间,更加细化的划分url。比如:
url(r"^App/", include("App.urls", namespace='App'))
# 指定命令空间后,使用反向解析时需要加上命名空间,比如:
return redirect(reverse('students:index'))
# 在模板中templates
{% url 'student:detail' %}

定制admin

通过定义ModelAdmin来定制model在admin的显示,例如:

class AuthorAdmin(admin.ModelAdmin):
	list_display = ("first_name", "last_name", "email")

admin.site.register(Author, AuthorAdmin)

给Author添加一个搜索框:
search_fields = ("first_name", "last_name")
给book添加一个过滤器
list_filter = ("publication_date")
过滤器不光可以作用在日期字段上,还可以作用在boolean类型和外键上。
另一种增加日期过滤的方式:
date_hierarchy = 'publication_date'
字段排序:
ordering = ("-publication_date")

修改编辑页面显示的字段及显示顺序,默认按照models中字段的定义顺序显示:
fields = ("title", "authors", "publisher", 'publication_date')
与fields相反的字段是exclude
exclude = ['publication_date',]
改善多对多关系中对象选择操作,比如给BookAdmin添加如下属性:
filter_horizontal = ('authors',)
filter_horizontal和filter_vertical 选项只适用于多对多关系。

一对多的外键关系,admin使用select box下拉菜单来表示。如不想用select box,可添加如下属性,让原来一次性加载所有publisher的select box变成填写publisher的id:
raw_id_fields = ('publisher',)
让字段分组显示,fieldsets和上面提到的field不能同时出现:

	fieldsets = (
    	('作者', {'fields': ('authors',)}),
    	('出版商', {'fields': ('publisher',)}),
	)

定制list_display字段的显示。比如给Author加一个布尔型gender字段,来表示性别。为了让显示更加人性化:
# 定制显示属性

    def showgender(self):
        if self.gender:
            return '男'
        else:
            return '女'
    list_display = ('first_name', 'last_name', 'email', showgender)

给该函数设置简短描述,让显示更加友好:
showgender.short_description = '性别'

可以将modeladmin的属性简单划分为列表页属性和添加、修改页属性

列表页属性

list_display,list_filter,search_fields,list_per_page

添加、修改页属性

fields ,fieldsets, filter_horizontal, raw_id_fields

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值