百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

16.python学习笔记-页面样式(python 页面设计)

zhezhongyun 2025-05-03 17:51 5 浏览

上一章我们完成了“学习笔记”Web应用程序的大部分功能,本章我们将通过Bootstrap对页面样式进行美化,这样会让我们的项目看起来更加专业。

页面样式

Bootstrap主页地址:

https://getbootstrap.com/

Bootstrap主页:

Bootstrap可以看作一个大型样式设置工具集,提供了大量模版用于设置页面样式,创建独特的项目总体风格。

1.下载安装

我们将使用django_bootstrap5将Bootstrap包含到项目当中,执行如下命令,下载安装django_bootstrap5:

pip install django_bootstrap5

2.注册第三方应用

修改项目的setting.py,将django_bootstrap5作为第三方应用程序注册到项目当中:

3.设置base.html的样式

修改base.html:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>学习笔记</title>
  <!-- 加载bootstrap的样式 -->
  {% load django_bootstrap5 %}
  {% bootstrap_css %}
  {% bootstrap_javascript %}

</head>
<body>
  <!-- 定义导航栏 -->
  <nav class="navbar navbar-expand-md navbar-light bg-light mb-4 border">
    <div class="container-fluid">
      <a class="navbar-brand" href="{% url 'learning_logs:index' %}">
          学习笔记</a>

      <button class="navbar-toggler" type="button" data-bs-toggle="collapse"
        data-bs-target="#navbarCollapse" aria-controls="navbarCollapse"
        aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>

      <div class="collapse navbar-collapse" id="navbarCollapse">
        <ul class="navbar-nav me-auto mb-2 mb-md-0">
          <li class="nav-item">
            <a class="nav-link" href="{% url 'learning_logs:topics' %}">
              主题列表</a></li>
        </ul> <!-- End of links on left side of navbar -->

        <!-- Account-related links -->
        <ul class="navbar-nav ms-auto mb-2 mb-md-0">

          {% if user.is_authenticated %}
            <li class="nav-item">
              <span class="navbar-text me-2">你好, {{ user.username }}.
                </span></li>
          {% else %}
            <li class="nav-item">
              <a class="nav-link" href="{% url 'accounts:register' %}">
                  注册</a></li>
            <li class="nav-item">
              <a class="nav-link" href="{% url 'accounts:login' %}">
                  登录</a></li>
          {% endif %}

        </ul> <!-- End of account-related links -->

        {% if user.is_authenticated %}
          <form action="{% url 'accounts:logout' %}" method='post'>
            {% csrf_token %}
            <button name='submit' class='btn btn-outline-secondary btn-sm'>
              注销</button>
          </form>
        {% endif %}

      </div> <!-- Closes collapsible parts of navbar -->

    </div> <!-- Closes navbar's container -->
  </nav> <!-- End of navbar -->
<!--div可以看作一个包含其他内容的容器,class属性设置块样式-->
  <main class="container">
    <div class="pb-2 mb-2 border-bottom">
      {% block page_header %}{% endblock page_header %}
    </div>

    <div>
      {% block content %}{% endblock content %}
    </div>
  </main>

</body>
</html>

3.设置index.html的样式

修改index.html:

{% extends 'learning_logs/base.html' %}

{% block page_header %}
  <div class="p-3 mb-4 bg-light border rounded-3">
    <div class="container-fluid py-4">
      <h1 class="display-3">记录您感兴趣的内容</h1>
      
      <p class="lead">使用学习笔记,每当您遇到感兴趣的内容,
        创建一个新主题,通过条目分类记录下来。</p>

      <a class="btn btn-primary btn-lg mt-1"
          href="{% url 'accounts:register' %}">注册 >></a>
    </div>
  </div>
{% endblock page_header %}

4.设置topics.html的样式

修改topics.html:

{% extends 'learning_logs/base.html' %}

{% block page_header %}
  <h1>所有主题</h1>
{% endblock page_header %}

{% block content %}

  <ul class="list-group border-bottom pb-2 mb-4">
    {% for topic in topics %}
      <li class="list-group-item border-0">
        <a href="{% url 'learning_logs:topic' topic.id %}">
          {{ topic.text }}</a>
      </li>
    {% empty %}
      <li class="list-group-item border-0">还没有创建任何主题。</li>
    {% endfor %}
  </ul>

  <a href="{% url 'learning_logs:new_topic' %}">创建主题</a>

{% endblock content %}

5.修改new_topic.html

{% extends "learning_logs/base.html" %}

{% block content %}
  <p>创建主题:</p>

  <form action="{% url 'learning_logs:new_topic' %}" method='post'>
    {% csrf_token %}
    {{ form.as_p }}
    <button name="submit">保存</button>
  </form>

{% endblock content %}

6.修改new_entry.html

{% extends "learning_logs/base.html" %}

{% block content %}

  <p><a href="{% url 'learning_logs:topic' topic.id %}">{{ topic }}</a></p>

  <p>创建条目:</p>
  <form action="{% url 'learning_logs:new_entry' topic.id %}" method='post'>
    {% csrf_token %}
    {{ form.as_p }}
    <button name='submit'>保存</button>
  </form>

{% endblock content %}

7.修改new_entry.html

{% extends "learning_logs/base.html" %}

{% block content %}

  <p><a href="{% url 'learning_logs:topic' topic.id %}">{{ topic }}</a></p>

  <p>编辑条目:</p>

  <form action="{% url 'learning_logs:edit_entry' entry.id %}" method='post'>
    {% csrf_token %}
    {{ form.as_p }}
    <button name="submit">保存</button>
  </form>

{% endblock content %}

测试页面样式

从上面修改过程可以看到,修改页面样式,并不需要修改后段代码,这正是MTV(模型M,模板T和视图V)模式带来的好处。

1.启动服务器

python manage.py runserver

2.使用浏览器访问

http://127.0.0.1:8000

3.默认主页展示

4.登录成功


5.创建新主题

6.点击主题列表


7.点击特定主题


8.创建新条目

相关推荐

css实现多行文本的展开收起(css实现一行多列)

背景在我们写需求时可能会遇到类似于这样的多行文本展开与收起的场景:那么,如何通过纯css实现这样的效果呢?实现的难点(1)位于多行文本右下角的展开收起按钮。(2)展开和收起两种状态的切换。(3)文本...

飞牛nas 中继功能再加强!跟所有穿透说再见吧!

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:科技菜菜原本飞牛nas的每周更新在周四,这次五一小长假!就提前更新了,虽然音频直通和离线播放是这次更新的主要内容,但是最让所有人开心的则是一...

这13个前端库,帮我在工作中赢得了不少摸鱼时间

前言平时开发的过程中,常常会使用到一些第三方库来提高开发效率,我总结了自己工作这么久以来经常用到的13个库,希望对大家有帮助~antd全称应该是AntDesign,这是一个React的组件库...

前端开发总踩坑?7 个 TypeScript 救命技巧速来查收!

在当下的前端开发浪潮中,React、Vue持续霸榜,Webpack性能优化话题不断,而TypeScript凭借强类型特性,成为众多开发者提升代码质量的“秘密武器”。可实际开发时,不少人被类型推导混乱...

不花一分钱!提升网站访问速度(让网站访问量提高的最好的方法是什么)

原创实用技巧不易,多多转发支持|现在很多公司都通过搭建官方网站的方式,比如电脑报全媒体群就有蛋黄星球(www.cpcw.com)来宣传自己的公司以及相关的产品。但是由于网友所处的位置不同,再加上网络...

Excel常用技能分享与探讨(5-宏与VBA简介 VBA之用户窗体-框架)

书接上文,以下是VBA用户窗体中常用控件的详细解析,涵盖核心属性、关键事件、典型应用场景及代码示例,助您精准掌握每个控件的使用方法。三、核心控件精讲3.7.框架(Frame)3.7.1、框架控件(Fr...

Excel常用技能分享与探讨(5-宏与VBA简介 VBA之用户窗体-高级用法)

书接上文,之前是VBA用户窗体中常用控件的详细解析,涵盖核心属性、关键事件、典型应用场景及代码示例,下面是窗体的最后一点我能想到的一些其他漏掉的东西。四、窗体交互进阶技巧4.1非模态窗体frmSea...

16.python学习笔记-页面样式(python 页面设计)

上一章我们完成了“学习笔记”Web应用程序的大部分功能,本章我们将通过Bootstrap对页面样式进行美化,这样会让我们的项目看起来更加专业。页面样式Bootstrap主页地址:https://get...

第8天 | 14天搞定Vue3.0,事件处理(详细)

在JavaScript语言中,当用户与UI组件交互时,UI组件能够激发一个相应事件。例如,用户按动按钮、滚动文本、移动鼠标或按下按键等,都将产生一个相应的事件。Vue3.0使用v-on指令(缩写为@符...

前端如何实现新手引导功能?(前端新手指引)

大家好,我是Echa。在产品发布新版本或者有新功能上线时,经常需要新手引导功能来引导用户了解应用。下面就来分享几个开箱即用的新手引导组件库,帮你快速实现新手引导功能!Intro.jsIntro.js...

C#_WPF_按钮模板及自定义控件的使用

源码私信联系WPF功能强大,但是控件的用法与Winfrom不大一样。这个文件主要说明了Button控件的用法。希望能给大家一个启示。1、按钮加入图片<ButtonGrid.Ro...

Excel常用技能分享与探讨(5-宏与VBA简介 VBA之用户窗体-命令按钮)

书接上文,以下是VBA用户窗体中常用控件的详细解析,涵盖核心属性、关键事件、典型应用场景及代码示例,助您精准掌握每个控件的使用方法。三、核心控件精讲3.3.命令按钮(CommandButton)3....

Vue指令:v-bind动态属性绑定(vue动态绑定属性值)

1.v-bind:指令认识和基本使用上一小节的学习,让我们理解以v开头的指令后面跟的将是表达式,同样标签也有一些合法的标签属性.如果想将这些属性的值变为表达式,我们可以使用Vue提供的v-bind:...

C#-初始窗体程序的控件,属性,事件 123

新创建的窗体可以说是一个空白的窗体,窗体中什么东西都没有,如果想要把窗体设置成像QQ,酷狗等一样拥有丰富功能和画面的窗体应用界面,则需要手动添加,常用的添加方式有两种即拖控件和编写代码,然后设置其相应...

Js基础7:表单元素属性(js表格属性)

一、封装获取元素的方法封装思想——函数封装——代码复用 function get_id(id){    //这个函数是专门来通过id获...