入门概念:
https://www.jianshu.com/p/0fe287440973
开发实例:
https://www.jianshu.com/p/dabf3ad31e46
本文进一步了解Django中的Templates、shell以及Admin。
Templates过滤器
过滤器
过滤器写在模板中,是属于Django的模板语言,可以修改模板中的变量,从而显示不同的内容。使用过滤器
{{value|filter}}
{{value|filter1|filter2|...}}
例如:
{{list_nums|length}}
显示的将是list的长度
- 实例
可以将之前开发实例中的edit_page页面中的代码进行如下修改:
原本写法:
{% if article %}
<input type="hidden" name="article_id" value = "{{article.id}}"/>
<label>文章标题:
<input type="text" name="title" value = "{{article.title}}"/>
</label>
</br>
<label>文章内容:
<input type="text" name="content" value = "{{article.content}}"/>
</label>
</br>
{% else %}
<label>文章标题:
<input type="text" name="title"/>
</label>
</br>
<label>文章内容:
<input type="text" name="content"/>
</label>
</br>
{% endif %}
使用过滤器的写法:
<input type="hidden" name="article_id" value = "{{article.id|default:'0'}}"/>
<label>文章标题:
<input type="text" name="title" value = "{{article.title}}"/>
</label>
</br>
<label>文章内容:
<input type="text" name="content" value = "{{article.content}}"/>
</label>
</br>
更多过滤器及其用法参考官方文档:
https://docs.djangoproject.com/zh-hans/2.2/ref/templates/builtins/
Django Shell
是一个Python的交互式命令行程序
自动引入了我们的项目环境,可以用于和项目进行交互。
- 使用方法:
python manage.py shell
其使用基于之前的内容:
class Article(models.Model):
title = models.CharField(max_length=32,default="title")
content = models.TextField(null=True)
ob = models.Manager()
def __str__(self):
return self.title
- 用途
主要用于在使用某个新内置函数时,对功能进行测试。
Admin增强用法
Admin后台用于对页面及数据进行一系列的管理。
- 例1:
如果我们想对该类显示的内容进行配置,使得其显示出内容,修改日期等数据,就需要为其创建admin配置类:
class ArticleAdmin(admin.ModelAdmin):
list_display = ('title','content')
admin.site.register(Article, ArticleAdmin)
- 例2
为了使用新功能,我能先对Article对象进行修改,新加入了一个pub_time属性。
class Article(models.Model):
title = models.CharField(max_length=32,default="title")
content = models.TextField(null=True)
# pub_time = models.DateTimeField(auto_now=True)
pub_time = models.DateTimeField(null=True)
ob = models.Manager()
def __str__(self):
return self.title
然后更新对象:
修改admin
class ArticleAdmin(admin.ModelAdmin):
list_display = ('title','content','pub_time')
list_filter = ('pub_time',)
admin.site.register(Article, ArticleAdmin)