版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
路由的写法name的使用
修改页面
修改文章性别属性
choices属性:由元组组成的一个可迭代对象,用来给字段提供可选的值
使用
修改个人日志
视图
模板
增加详情页面
路由:
视图:
模板:使用的about页面进行修改
分页
分页:一个页面显示太多数据,效果不好需要分页处理
一般分为两种:
- 前端分页
- 后端将数据一次性全部提供给前端,前端通过js进行分页
- 优点:简单直接
- 缺点:首先传输数据需要时间,数据库的压力大
- 后端分页
- 在数据库查询时候,指定查询范围,类似于sql中的limit,ORM中的切片[1:10]
Django中提供的问也插件,paginator专门提供分页功能,在django1.4版本之后才有
增加多条数据
分页提供的方法
def fytest(request):
# 使用Django自带分页Paginator的时候,元数据要增排序属性
article = Article.objects.all().order_by('-date')
# print(article)
# 每次显示5条数据
paginator = Paginator(article,5) # 设置每一页显示多少条,返回一个Paginator
# print(paginator.count) # 返回内容总条数
# print(paginator.page_range) # 可迭代的页数
# print(paginator.num_pages) # 最大页数
page_obj = paginator.page(2)
print(page_obj) # 可以有的页数的数据 表示当前对象 <Page 2 of 21>
for one in page_obj:
print(one.content)
print(page_obj.number) # 当前页数
print(page_obj.has_next()) # 有没有下一页,返回值 是True或者False
print(page_obj.has_previous()) # 判断是否有上一页 是True 或者False
print(page_obj.has_other_pages()) # 判断是否有其他页 是True 或者False
print(page_obj.next_page_number()) # 返回下一页的代码 如果没有下一页 抛出异常
print(page_obj.previous_page_number()) # 返回上一页的页码
分页的基本实现
路由
视图
模板
前端页面展示页数
视图
路由
模板
图片
在Django开发中,除了静态文件(视频,声音,图片),将文件上传到服务器上面,首先需要一个文件处理模块(例如:PIL(python2版本)和pillow一样,作用就是处理图片的,参与人工智能,数据分析),其次需要文件的存储位置。
安装pillow
pip install pillow
配置
修改模型
数据迁移
使用图片
富文本
Ckeditor自重成熟的富文本编辑器,于Django结合的比较好
安装
配置
路由
使用
模型
导包
admin添加数据
前端展示
修改index页
模型中增加字段
数据迁移
ORM操作
修改视图
修改页面index.html
{# 继承父类模板 #}
{% extends 'base.html' %}
{% block content %}
<div class="jztop"></div>
<div class="container">
<div class="bloglist f_l">
{% for one in article %}
<h3><a href="/articledetails/{{ one.id }}">{{ one.title }}</a></h3>
<figure><img src="/static/{{ one.picture }}" alt="{{ one.title }}"></figure>
<ul>
<p> {{ one.description | safe }}</p>
<a title="{{ one.title }}" href="/articledetails/{{ one.id }}" target="_blank" class="readmore">阅读全文>></a>
</ul>
<p class="dateview"><span>{{ one.date }}</span><span>作者:{{ one.author }}</span><span>个人博客:[<a href="/jstt/bj/">{{ article.type.first }}</a>]</span></p>
{% endfor %}
</div>
<div class="r_box f_r">
<div class="tit01">
<h3 class="tit">关注我</h3>
<div class="gzwm">
<ul>
<li><a class="email" href="#" target="_blank">我的电话</a></li>
<li><a class="qq" href="#mailto:[email protected]" target="_blank">我的邮箱</a></li>
<li><a class="tel" href="#" target="_blank">我的QQ</a></li>
<li><a class="prize" href="#">个人奖项</a></li>
</ul>
</div>
</div>
<!--tit01 end-->
<div class="tuwen">
<h3 class="tit">图文推荐</h3>
<ul>
{% for tuwen in recommend_article %}
<li><a href="/articledetails/{{ tuwen.id }}"><img src="/static/{{ tuwen.picture }}"><b>{{ tuwen.title }}</b></a>
<p><span class="tulanmu"><a href="articledetails/{{ tuwen.id }}">{{ tuwen.type.first }}</a></span><span class="tutime">{{ tuwen.date }}</span></p>
</li>
{% endfor %}
</ul>
</div>
<div class="ph">
<h3 class="tit">点击排行</h3>
<ul class="rank">
{% for one in article %}
<li><a href="/articledetails/{{ one.id }}" title="{{ one.title }}" target="_blank">{{ one.title }}</a></li>
{% endfor %}
</ul>
</div>
<div class="ad"> <img src="/static/images/03.jpg"> </div>
</div>
</div>
<!-- container代码 结束 -->
<div class="jzend"></div>
{% endblock %}