Django_补充小技巧
1.Templates过滤器
什么是过滤器?
写在模板中,属于Django模板语言
可以修改模板中的变量,从而显示不同的内容
怎么使用过滤器?
{{value|filter}}
例子:
{{list_nums|length}} ---------->得到的是list_nums的长度
过滤器叠加:{{value|filter1|filter2|...}}
Dajngo 如果不存在变量不会报错,但是如果一旦需要传回,没有值传回的是有个空字符串,所以会报错,如果需要传回,我们可以用过滤器显示默认为0
例如:在我们的博客当中,有冗余的代码,我们可以修改一下
过滤器的值要用引号
更多的过滤器参考官网。。。
2.Django Shell
什么是Django Shell?
它是一个Python的交互式命令行程序
它自动引入了我们的项目环境
我们可以使用它和我们的项目进项交互
如何使用Django Shell?
Python manage.py shell
from blog.models import Article
Article.objects.all()
可以直接在命令行中看到我们创建的数据表
有什么用?
我们可以使用DjangoShell 来进行一些调试工作
测试未知的方法
Acticle.objects.all().values() 可以看到返回的形式
3.Admin
admin的功能非常强大
创建admin配置类
class ActicleAdmin(admin.ModelAdmin)
注册:admin.site.register(Article,ActicleAdmin)
显示其他字段
list_display = (‘title’,‘content’)
是以元祖的形式时,当只有一个属性时不要忘记加逗号,属性必须与模板中的数据属性一致
list_display 同时支持tuple和list,但是字段名一定是字符串。
建议使用tuple,不可变,安全
eg:
在admin.py中:
class ActicleAdmin(admin.ModelAdmin):
list_display= ('title','content')
admin.site.register(Acticle,ActicleAdmin)
可以显示出来title和内容字段了
如果我们想显示发表时间,需要改动我们的模板
class Acticle(models.Model):
title= models.CharField(max_length=64,default='title')
content= models.TextField(null = True)
pub_time= models.DateTimeField(auto_now=True,null=True) //python必须有null=True
def __str__(self):
return self.title
效果:
看不出来有发表时间在里面,不能修改
若想要修改:
pub_time= models.DateTimeField(null=True)
可以修改了
admin的过滤器
list_filter=('pub_time',) //元祖主要加逗号
在admin.py中添加代码:
class ActicleAdmin(admin.ModelAdmin):
list_display= ('title','content','pub_time')
list_filter= ('pub_time',)
admin.site.register(Acticle,ActicleAdmin)
就可以看到效果:
这就是过滤器的功能,我们可以看到以时间分类模板内容
更多的过滤器内容可以参考官网