or的代码实现逻辑以及美化django admin

数据库里or的代码实现逻辑是|,model_test.py里新增代码如下图:

打印的结果如下图:

正常是这样显示的如下图:

然后pip install simpleui或者pip3 install simpleui,回车就可以把simpleui-3.9的安装好,然后把simpleui放到settings.py的INSTALLED_APPS下,如下图:

刷新http://127.0.0.1:8000/admin,可以看到django admin管理和之前的不一样了,如下图:

进来后页面也变化了,在文章里只显示一个文章标题字段这一列,如果想多显示几个字段,可以在admin.py里定义一个类,新增代码如下图:

刷新页面,可以看到四个字段,如下图:

在list_display下面输入search_fields = ['title']模糊搜索功能,不能输入带外键的字段,要不然刷新或点搜索按钮的时候会报错,如category(在Category类里),search_fields = ['title', 'category'],这样写就报错了,如下图:

在search_fields下面输入list_filter = ['category', 'is_delete'],筛选,按照多个字段筛选,也可以输入一个,如下图:

list_filter下面输入list_per_page = 10,每页显示多少条文章,如下图:

也可以改变主题,选一个颜色,也可以全屏展示,也可以设置字号,新增代码如下图:

 

前端某个字段要做特殊处理,描述字段内容超过10个,后面的显示...:

实现这个功能,在user目录下新建一个目录,叫templatetags,只能叫这个名字,不能叫别的,然后在templatetags下面再建两个文件,一个叫__init__.py,另一个随便叫,我的是my_tag.py,my_tag.py中的代码如下图:

在index.html里就可以调这个函数,把article.describe传给了test函数里的形参,length传给了20,index.html新增的代码如下图:

在index.html里class=r_box,第一个函数的用法如下图:

在index.html里class=r_box,第二个函数的用法如下图:

刷新页面,可以看到描述是长度20...,如下图:

再把代码恢复过来,<p>{{ article.describe }}</p>

为了让详情页里显示的时间格式正常,在info.html里写上<li class="timer">时间:{{ article.create_time | date:'Y-m-d H:i:s'}}</li>,加粗的是后加上的,刷新详情页可以正常显示时间格式,如下图:

在templates目录下新建一个html文件,xiake.html,新增代码如下图:

在views.py里新建一个函数,代码如下图:

在urls.py里导入xiake,在添加路径path('xiake/', xiake),,刷新http://127.0.0.1:8000/xiake/,浏览器没有解析,还是字符串,如下图:

不加safe这个字符串是不安全的,在xiake.html里修改代码为s|safe,加个safe就能识别出来这是一个html标签,就能弹出100px大小的哈哈哈,如下图:

在templates里把test1.html文件放进去了,里面有好多django自带的过滤器,可以试一下

在templates目录下新建一个html文件,form.html,新增代码如下图:

在views.py里新增代码如下图:

在urls.py里导入add_article,再新增path('add_article/', add_article),,在浏览器里输入http://127.0.0.1:8000/add_article/,点击回车,弹出如下图:

CSRF是为了防止重复提交,django默认post请求都需要加csrf token,如果不加请求不成功,为了解决这一问题,第一种方法是在settings.py里注释掉MIDDLEWARE->'django.middleware.csrf.CsrfViewMiddleware',,另一种方法是在form.html里增加如下代码:

首先访问http://127.0.0.1:8000/add_article/,获取文本框页面是get请求,获取分类导航,然后把form.html的内容渲染到页面,接下来在各个input框里输入内容,点击提交按钮,是post请求,提交成功后可以去article表里看插入的文章成功了,然后重定向到index页面,这个是fvb的方式,f是function,v是views,接下来用cvb的方式,c是class,v是views,views.py里要导入from django.views import View修改代码如下图:

在urls.py里新增的代码如下图:

cvb(class views base)比fvb(function views base)更好用

posted @ 2020-01-30 16:01  laosun0204  阅读(422)  评论(0编辑  收藏  举报