一、Templates过滤器
过滤器属于django模板语言
修改模板中的变量,从而显示不同内容
{{ value | filter }}
举例:{{ list_nums | length}} 表示list的长度
{{ value | filter | filter | filter }} 可叠加
django模板如果出现了不存在的变量,不会报错,只会给出空值
因此修改add_article.html 去掉{{% if *** %}} 添加过滤器default
<!DOCTYPE html> <html> <head> <title>增加新文章</title> </head> <body> <form action="{% url 'blog:sub_article' %}" method="post"> {% csrf_token %} <input type='hidden' name='article_id' value="{{ article.id | default:'0' }}"> 文章标题<input type="text" name='title' value='{{ article.title }}'/> <br> 文章内容<input type="text" name='content' value='{{ article.content }}'/> <br> <input type="submit" value="提交"> </form> </body> </html>
二、Django shell
Python交互式命令行程序
自动引入项目环境
可以使用它和项目进行交互
启动django shell
pyhton manage.py shell
交互举例:
from blog.models import Article
Article.objects.all()
作用:1)调试工作 2)测试未知的方法
三、Admin增强
注册Admin配置类:
class ArticleAdmin(admin.ModelAdmin)
注册:admin.site.register(models.Article,ArticleAdmin)
显示其他字段
list_diplay = ('title','content') (就是models里的字段名)
admin.py中如下:
from django.contrib import admin from . import models # Register your models here. class ArticleAdmin(admin.ModelAdmin): list_display = ('title','content') admin.site.register(models.Article,ArticleAdmin)
Admin过滤器
list_diplay = ('pub_time',)
注意tuple中只有一个成员,要加逗号
在models。py中Article类添加发布日期
from django.db import models # Create your models here. class Article(models.Model): title = models.CharField(max_length=32,default='title') content = models.TextField(null=True) pub_time = models.DateTimeField(auto_now=True) def __str__(self): return self.title
数据移植(才可以在数据库中显示)
执行 python manage.py makemigrations
再执行
python manage.py migrate
生成了数据表
在admin.py中添加过滤器:
from django.contrib import admin from . import models # Register your models here. class ArticleAdmin(admin.ModelAdmin): list_display = ('title','content','pub_time') list_filter = ('pub_time',) admin.site.register(models.Article,ArticleAdmin)