日记-2017-7-25-django/admin-Levenshtein
0725
- django-admin 简介| 注册-排序-显示-list_display修改
- 字符串模糊比较
django-admin
django admin 是 django 提供的非常好用的后台管理功能
参考资料:django-admin-site
介绍几个基本入门的功能
1、注册
注册有两种方法
from django.contrib import admin
from .models import CinemaUrl, Cover
# Register your models here.
# 第一种
admin.site.register(Cover)
# 第二种
@admin.register(CinemaUrl)
class CinemaAdmin(admin.ModelAdmin):
pass
第一种注册方法用于初期快速验证想法用,常用的更多的是第二种,可以按照一定的需求修改后台管理方法。
之后的方法也是基于第二种方法开展
2、list_display
在一个 model 下面可能有很多字段,我们希望能够在一个页面能够显示更多的信息,所以使用了 list_display
(app.)models.py
class CinemaUrl(models.Model):
city = models.CharField('城市', max_length=50)
district = models.CharField('区/县', max_length=255)
location = models.CharField('详细地址', max_length=255, default='')
cinema_name = models.CharField('电影院名', max_length=255, default='')
created_time = models.DateTimeField('创建时间', auto_now_add=True)
is_active = models.BooleanField('是否有效', default=True)
view_count = models.IntegerField('访问次数', default=0)
code = models.IntegerField('索引码')
(app.)admin.py
@admin.register(CinemaUrl)
class CinemaAdmin(admin.ModelAdmin):
list_display = ('city', 'district', 'location', 'cinema_name', 'view_count', 'code')
在网站上的显示如下
3、排序
ordering 不仅能对时间排序,还可以对其他字段排序
排序:reference
ordering = ('created_time', )
4、修改 list_display 下的字段
使用 list_edible 可以对显示的字段进行修改
@admin.register(Movie)
class MovieAdmin(admin.ModelAdmin):
ordering = ('created_time', )
list_display = ('name', 'rating', 'directors', 'casts', 'genes', 'created_time', 'is_top', 'is_in_theater')
list_editable = ('is_top', 'is_in_theater')
在网站上显示如下
以上几条是在 0725 使用到的技能,之后有新的需求再添加
字符串模糊查询
在做 电影票查询 项目中,从不同的网站爬下的数据各自有些区别,但最终希望合并几个网站的数据到一起
比如在不同网站上描述 '上海时代影城' 可能为 '时代影城', '时代影城(万乐城店)', '上海时代影城(万乐城店)',这样合并起来并不容易,在网上查找解决方案
找到了一个库 python-Levenshtein
>>> import Levenshtein
>>> Levenshtein.ratio('abc', 'abc')
1.0
>>> Levenshtein.ratio('abc', 'ascd')
0.5714285714285714
所以,当使用上述函数判断两个字符串相似率大于0.7(经验值)时,断定两个字符串表达了同一个意思。