路由的一种写法,修改页面(修改作者性别字段属性,修改个人日志页,增加详情页面)分页的实现 使用图片 富文本的实现

一、路由的写法 name的使用


在这里插入图片描述


二、修改页面


1.修改作者性别字段属性


在这里插入图片描述
choices属性:由元组组成的一个可迭代对象,用来给字段提供可选值。
在这里插入图片描述
使用如下代码可以使数字对应的性别汉语展示出来
在这里插入图片描述
效果如下
在这里插入图片描述


2.修改个人日志页


在这里插入图片描述
效果如下,滚动条很长,所有数据在一页显示
在这里插入图片描述


3.增加详情页面


模板: 使用的about页面进行修改,新建一个html articledetails.html把about全部复制然后进去修改
在这里插入图片描述
效果如下:
在这里插入图片描述


三、分页


分页:一个页面显示太多数据,效果不好需要分页处理

一般分为两种:

  • 前端分页
    • 后端将数据一次性全部提供给前端,前端通过js进行分页
    • 优点:简单直接
    • 缺点:传输数据需要时间,对数据库压力大
  • 后端分页
    • 在数据库查询时,指定查询范围,类似于sql中的limit,ORM中的切片。

django中提供了分页插件,paginator,专门负责提供分页功能,在django1.4版本之后才有。

增加多条数据

导入模块
在这里插入图片描述


1.增加多条数据


在这里插入图片描述
增加多条数据成功
在这里插入图片描述


2.分页提供的方法



from django.core.paginator import Paginator
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 20 of 21>
    for one in page_obj:
        print (one.content)

    # print(page_obj.number)   ## 当前页数
    # print(page_obj.has_next())   ## 有没有下一页 返回值  是True 或者 Flase
    # print(page_obj.has_previous())  ## 判断是否有上一页   是True 或者 Flase
    # print(page_obj.has_other_pages())  ## 判断是否有其他页   是True 或者 Flase
    # print(page_obj.next_page_number())  # 返回 下一页的页码   如果没有下一页 抛出异常
    # print(page_obj.previous_page_number())  ## 返回上一页的页码

    return HttpResponse("分页功能测试")

3.分页的基本实现


路由:
在这里插入图片描述
视图
在这里插入图片描述
模板
在这里插入图片描述
前端页面展示 页数
在这里插入图片描述
页数太多,效果不好

展示指定页数

指定展示5 页
视图
在这里插入图片描述
路由
在这里插入图片描述
模板
在这里插入图片描述
在这里插入图片描述


四、图片


在django开发中,除了静态文件,还有媒体文件(视频,声音,图片),将文件上传到服务器上面,首先需要一个文件处理模块(例如:PIL(python2版本) 和 pillow(python3版本) 一样,作用就是处理图片的,参与人工智能,数据分析),其次需要文件的存储位置。


1.安装 pillow


在这里插入图片描述


2.配置


在这里插入图片描述


3.修改类模型并数据迁移


在这里插入图片描述
生成迁移文件
在这里插入图片描述
数据迁移 同步表结构

migrate


4.使用图片


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在站点管理中可以选择添加图片
在这里插入图片描述


五、富文本


Ckeditor 一种成熟的富文本编辑器,与django结合的比较好


1.安装


在这里插入图片描述


2.配置


settings.py
在这里插入图片描述
在这里插入图片描述
路由
在这里插入图片描述


3.使用


模型

导包
在这里插入图片描述
admin添加数据
在这里插入图片描述
前端展示
在这里插入图片描述
在这里插入图片描述
修改index页
模型中增加字段
在这里插入图片描述
数据迁移

ORM操作,添加推荐
在这里插入图片描述
修改视图
在这里插入图片描述
修改页面 index.html

{#继承父类模板#}
{% extends "base.html" %}

{% block content %}
    <div class="jztop"></div>
    <div class="container">
        <div class="bloglist f_l">
            {% for article in article %}

            <h3><a href="/articledetails/{{ article.id }}">{{ article.title }}</a></h3>
            <figure><img src="/static/{{ article.picture }}" alt="{{ article.title }}"></figure>
            <ul>
                <p> {{ article.description | safe }}</p>
                <a title="{{ article.title }}" href="/articledetails/{{ article.id }}" target="_blank" class="readmore">阅读全文&gt;&gt;</a>
            </ul>
            <p class="dateview"><span>{{ article.date }}</span><span>作者:{{ article.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:admin@admin.com" 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 paihang in click_article %}
                    <li><a href="/articledetails/{{ paihang.id }}" title="{{ paihang.title }}" target="_blank">{{ paihang.title }}</a>
                    </li>
                    {% endfor %}

                </ul>
            </div>
            <div class="ad"><img src="/static/images/03.jpg"></div>
        </div>
    </div>
    <!-- container代码 结束 -->
    <div class="jzend"></div>

{% endblock %}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值