Django框架(六)--路由别名,分页,图片,富文本,博客项目修改页面

一、路由的写法

使用别名

在这里插入图片描述

在这里插入图片描述

二、修改页面

博客项目连接

(一)修改个人日记页面

修改文章模型的性别属性

在这里插入图片描述

choices属性:由元组组成的一个可迭代对象,用来给字段提供可选值。

想查询值时,可以使用如下方法:
在这里插入图片描述

修改视图

在这里插入图片描述

修改模板

在这里插入图片描述

(二)增加文章详情页

路由

在这里插入图片描述

视图

在这里插入图片描述

修改模板newslistpic.html

在这里插入图片描述

新建articledetails.html模板

在这里插入图片描述

三、分页

(一)添加大量数据

路由

在这里插入图片描述

视图

在这里插入图片描述

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

一般分为两种:

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

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

(二)分页的常用方法

from django.core.paginator import Paginator

def pagetest(request):
    # 使用django自带分页Paginator的时候,源数据需要增加排序属性,否则会报异常
    article = Article.objects.all().order_by('-date')
    
    paginator = Paginator(article,5)    # 设置每页显示的数据条数,返回一个对象
    print(paginator.count)    # 返回内容总条数
    print(paginator.page_range)    # 可迭代页数范围
    print(paginator.num_pages)    # 返回最大页数
    page = paginator.page(5)
    print(page)    # <Page 5 of 21>,表示当前对象
    for one in page:
        print(one.content)

    print(page.number)    # 5,当前页
    print(page.has_next())    # 是否有下一页
    print(page.has_previous())    # 是否有上一页
    print(page.has_other_pages())    # 是否有其他页
    print(page.next_page_number())    # 下一页的页码,如果没有,抛异常
    print(page.previous_page_number())    # 上一页的页码,如果没有,抛异常

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

(三)实现分页

视图

在这里插入图片描述

路由

第一个是防止由其他页面跳转时产生让出现错误
在这里插入图片描述

模板

在这里插入图片描述

结果

在这里插入图片描述

但是这样如果页数太多,效果不好。

(四)优化

每次显示五个页码,并添加上一页、下一页、首页、尾页

视图

在这里插入图片描述

模板

在这里插入图片描述

四、图片

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

1.安装pillow

在这里插入图片描述

2.配置settings.py

在这里插入图片描述

3.修改模型

在这里插入图片描述

4.数据迁移

在这里插入图片描述

在这里插入图片描述

5.使用图片

在这里插入图片描述

五、富文本

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

1.安装ckeditor

在这里插入图片描述

2.配置settings.py

在这里插入图片描述

在这里插入图片描述

3.路由

在这里插入图片描述

使用

1.导包

在这里插入图片描述

2.修改字段类型

在这里插入图片描述

3.数据迁移
4.站点管理

在这里插入图片描述

5.前端显示

在这里插入图片描述

修改模板文件
在这里插入图片描述

在这里插入图片描述

六、修改index页面

1.模型中增加字段

在这里插入图片描述

2.数据迁移
3.ORM操作,更新文章的recommend字段

终端执行

python manage.py shell

然后运行如下代码

在这里插入图片描述

4.修改视图

在这里插入图片描述

5.修改模板
{#继承父类模板#}
{% 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">阅读全文&gt;&gt;</a>
      </ul>
      <p class="dateview"><span>{{ one.date }}</span><span>作者:{{ one.author }}</span><span>个人博客:[<a href="/jstt/bj/">{{ one.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 one in recommend_article %}
          <li><a href="/articledetails/{{ one.id }}"><img src="/static/{{ one.picture }}"><b>{{ one.title }}</b></a>
            <p><span class="tulanmu"><a href="articledetails/{{ one.id }}">{{ one.type.first }}</a></span><span class="tutime">{{ one.date }}</span></p>
          </li>
          {% endfor %}
        </ul>
      </div>
      <div class="ph">
        <h3 class="tit">点击排行</h3>
        <ul class="rank">
          {% for one in click_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 %}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要搭建一个django-vue-admin项目,你可以按照以下步骤进行操作: 1. 首先,创建一个Django项目,并安装所需的依赖。在设置文件中,确保你的TEMPLATES配置中包含了以下内容:'BACKEND': 'django.template.backends.django.DjangoTemplates'。 2. 接下来,配置Django的模板上下文处理器。在设置文件中,确保你的TEMPLATES配置中包含了以下内容:'django.contrib.auth.context_processors.auth'和'django.template.context_processors.request'。 3. 然后,安装django-vue-admin库。你可以使用pip安装它:pip install django-vue-admin。 4. 在你的Django项目中创建一个新的应用程序。你可以使用以下命令创建一个名为"admin"的应用程序:python manage.py startapp admin。 5. 在你的项目设置文件中注册新创建的应用程序。将'app名'admin'添加到你的INSTALLED_APPS配置中。 6. 在admin应用程序的目录中创建一个名为"templates"的文件夹,并在其中创建一个名为"admin"的子文件夹。 7. 在"admin"文件夹中创建一个名为"base.html"的模板文件,该文件将作为你的项目的基础模板。 8. 在"base.html"模板文件中,使用Vue.js编写前端代码,以实现你希望在项目中看到的功能和样式。 9. 在你的admin应用程序的视图中,定义需要的后端逻辑和模型操作。 10. 最后,运行你的Django服务器并访问项目的URL,以查看django-vue-admin项目的效果。 请按照以上步骤进行操作,你就可以成功地搭建一个django-vue-admin项目了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Django+Vue环境搭建](https://blog.csdn.net/WeirdoGiraffe/article/details/124863602)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值