Django之静态文件及模板语法(上)

Python学习之路系列文章目录



  1. python面向对象之警察与匪徒火拼场景模拟
  2. python面向对像之第二次笔记
  3. Django环境搭建及测试
  4. 第1个Django应用及Django的请求处理
  5. Django之静态文件及模板语法(上)

---

---

一、静态文件

1.1 多个页面

	- url -> 函数
	- 函数

通过配置URL路由,将不同的URL与相应的视图函数关联起来,当用户访问特定URL时,Django将调用相应的视图函数,并返回该视图函数处理后的页面内容给用户。

# urls.py
urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', views.index),
    path('login/', views.login),
    path('personal/', views.personal)
]
# Create your views here.

def index(request):
    return HttpResponse("Hello, world. You're at the")


def login(request):
    return HttpResponse("登录")


def personal(request):
    return HttpResponse("个人中心")

来看效果:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.2 templates模板

Django中 ,模板( Templates )是用来生成页面的文件,它们使用Django模板语言(DTL)编写,可以包含HTML、CSS、JavaScript以及Django模板标记。模板允许您动态地插入数据,并在渲染过程中生成最终的HTML页面。

以下是创建和使用模板的基本步骤:

  1. 创建模板文件夹:在您的Django应用程序目录中创建一个名为templates的文件夹。Django将在这个文件夹中查找模板文件。

  2. 编写模板文件:在 templates 文件夹中创建模板文件。这些文件将使用 HTML 和 Django 模板语言编写,可以包含动态数据和模板标记。例如,您可以创建一个名为 index.html 的模板文件,其中包含以下内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Home Page</title>
</head>
<body>
    <h1>Welcome to our website!</h1>
    <p>Hello, {{ user.username }}!</p>
</body>
</html>

在这个例子中,{{ user.username }}是一个模板变量,它将在渲染模板时由视图函数传递过来的数据填充。

  1. 加载模板:在视图函数中加载并渲染模板。在视图函数中使用render()函数来加载模板并渲染它。例如:
from django.shortcuts import render

def home(request):
    user = {"username": "administrator"}  # 假设您有一个用户对象
    return render(request, 'index.html', {'user': user})

在这个例子中,我们将user对象传递给模板,并在模板中使用它。

  1. 配置模板路径:确保在Django的设置文件中配置了正确的模板路径。默认情况下,Django会在每个应用程序的templates文件夹中查找模板文件,但您也可以在设置中配置其他模板路径。

在这里插入图片描述

效果如下:

在这里插入图片描述

1.3 静态文件

在Django中,静态文件通常包括 CSS样式表JavaScript脚本图像文件 等,它们用于呈现网站的外观和行为。

下面是关于Django静态文件的一些重要概念和用法:

  1. 静态文件目录结构
    默认情况下,Django项目会创建一个名为static的目录,用于存放静态文件。这个目录通常位于你的项目根目录下。你可以在settings.py中使用STATICFILES_DIRS设置自定义的静态文件目录。

    例如,如果你有一个名为static_files的目录,并希望将其包含在静态文件查找中,可以添加以下设置:

    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static_files'),
    ]
    

    最后,在部署时,你还需要设置STATIC_ROOT来指定静态文件的收集目录。例如,可以将STATIC_ROOT设置为os.path.join(BASE_DIR, 'static')

    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    

    然后,运行python manage.py collectstatic命令来收集静态文件到指定的目录中。这样,静态文件就可以通过STATIC_URL指定的URL路径访问了。

  2. 收集静态文件
    在部署Django项目时,你通常会将静态文件收集到一个单独的目录中,以便Web服务器能够提供这些文件。你可以使用collectstatic命令来收集静态文件。例如:

    python manage.py collectstatic
    
  3. 静态文件URL配置
    在Django的settings.py文件中,STATIC_URL是用来配置静态文件URL路径的设置。默认情况下,这个设置是'static/',表示静态文件的URL路径为/static/

    你可以将这个设置修改为你想要的静态文件URL路径。例如,如果你希望静态文件的URL路径为 /assets/ ,可以将 STATIC_URL 设置为 assets/

    STATIC_URL = 'assets/'
    

    请注意,STATIC_URL 只是用于指定静态文件的URL前缀,它不会影响静态文件在服务器上的存储位置。静态文件的实际存储位置由STATICFILES_DIRSSTATIC_ROOT设置决定。

  4. 模板中的静态文件引用
    在模板中,你可以使用{% static %}模板标签来引用静态文件。例如:

    <link rel="stylesheet" type="text/css" href="{% static 'css/style.css' %}">
    <script src="{% static 'js/script.js' %}"></script>
    
  5. 静态文件的版本控制
    在生产环境中,为了避免浏览器缓存旧的静态文件,你可以考虑在静态文件URL中添加版本号或哈希值。Django内置了 static 模板标签来处理这个问题。例如:

    <link rel="stylesheet" type="text/css" href="{% static 'css/style.css' %}?v={{ STATICFILES_VERSION }}">
    
  6. 静态文件处理器
    Django通过静态文件处理器(static file handlers)来处理静态文件的收集和提供。这些处理器可以压缩、合并或转换静态文件,以便在生产环境中提高性能。你可以在 settings.py 中配置这些处理器。

1.4 引用静态文件

在Django模板中引用静态文件非常简单,你可以使用 {% static %} 模板标签来引用静态文件。

例如:

  1. 引用CSS文件

    <link rel="stylesheet" type="text/css" href="{% static 'css/style.css' %}">
    
  2. 引用JavaScript文件

    <script src="{% static 'js/script.js' %}"></script>
    
  3. 引用图像文件

    <img src="{% static 'images/logo.png' %}" alt="Logo">
    

在模板中,{% static %} 标签将被替换为静态文件的实际 URL 路径,这样浏览器就可以正确加载这些文件了。

请确保在引用静态文件时使用正确的文件路径。如果你的静态文件在STATICFILES_DIRS 中的子目录中,你需要包括子目录的路径。如果你的静态文件已经被收集到 STATIC_ROOT 目录中,那么你只需要指定文件名即可。

另外,请确保您的静态文件位于静态文件目录中,并且已经收集到了 STATIC_ROOT 目录中(如果在生产环境中使用)。

注意:

在模板中使用静态文件时需要加载 {% load static %} 模板标签。这个模板标签用于加载 Django 的静态文件处理器,使得你可以在模板中使用 {% static %} 模板标签来引用静态文件。

并且请确保 {% load static %} 标签在您使用 {% static %} 标签之前进行加载,以便正确使用静态文件的路径。如果您忘记加载静态文件处理器,模板将无法识别 {% static %} 标签,并且无法正确解析静态文件的URL路径。

所以一般放在开头:

{% load static %}
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>index首页</title>
    <link rel="stylesheet" href="{% static 'css/clock.css' %}"/>
</head>

<body>
<div class="box">
    <div id="HH">00</div>
    <div>:</div>
    <div id="mm">00</div>
    <div>:</div>
    <div id="ss">00</div>
</div>

<script src="{% static 'js/clock.js' %}"></script>
</body>

</html>

    html,
    body {
      margin: 0;
      padding: 0;
      height: 100%;
      background-image: linear-gradient(to bottom right, red, gold);
    }

    .box {
      width: 400px;
      height: 250px;
      background-color: rgba(255, 255, 255, 0.6);
      border-radius: 6px;
      position: absolute;
      left: 50%;
      top: 40%;
      transform: translate(-50%, -50%);
      box-shadow: 1px 1px 10px #fff;
      text-shadow: 0px 1px 30px white;

      display: flex;
      justify-content: space-around;
      align-items: center;
      font-size: 70px;
      user-select: none;
      padding: 0 20px;

      /* 盒子投影 */
      -webkit-box-reflect: below 0px -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(0%, transparent), to(rgba(250, 250, 250, .2)));
    }
  

    window.onload = function () {
      // 定时器,每隔 1 秒执行 1 次
      setInterval(() => {
        var dt = new Date()
        var HH = dt.getHours()
        var mm = dt.getMinutes()
        var ss = dt.getSeconds()

        // 为页面上的元素赋值
        document.querySelector('#HH').innerHTML = padZero(HH)
        document.querySelector('#mm').innerHTML = padZero(mm)
        document.querySelector('#ss').innerHTML = padZero(ss)
      }, 1000)
    }

    // 补零函数
    function padZero(n) {
      return n > 9 ? n : '0' + n
    }
  

在这里插入图片描述

效果:

在这里插入图片描述

------

总结

这个作者很懒,总结交给各位啦~

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在 Django 框架中,可以使用 Python 的 csv 库来读取 csv 文件,并使用 Django模板系统将数据呈现在 web 页面上。 假设你已经有了一个 Django 项目,并且在你的项目中已经有了一个 app,那么可以按照如下步骤来实现这个功能: 1. 在你的 app 中创建一个视图函数,用于读取 csv 文件并将数据处理成一个字典列表的形式。例如: ```python import csv def read_csv(request): data = [] with open('path/to/csv/file.csv', 'r') as f: reader = csv.DictReader(f) for row in reader: data.append(row) return data ``` 2. 在你的 app 中创建一个模板,用于展示 csv 文件中的数据。例如,如果你想在表格中展示数据,可以使用如下的代码: ```html <table> <thead> <tr> {% for key in data.0 %} <th>{{ key }}</th> {% endfor %} </tr> </thead> <tbody> {% for row in data %} <tr> {% for value in row.values %} <td>{{ value }}</td> {% endfor %} </tr> {% endfor %} </tbody> </table> ``` 3. 在你的 app 中创建一个 URLconf,用于将视图函数和模板绑定在一起。例如: ```python from django.urls import path from . import views urlpatterns = [ path('csv/', views.read_csv, name='csv'), ] ``` 这样,当你访问项目中的 `/csv/` URL 时,就会运 ### 回答2: 要将CSV文件Django框架搭建成web页面,可以按照以下步骤进行操作: 第一步是在Django项目中创建一个模型(Model),模型可以定义存储CSV数据的表格结构。在模型中,我们可以使用Django的 fields 模块中的相关字段来定义每列数据的类型和名称。 第二步是创建一个视图(View),用于处理用户请求并加载CSV文件数据。在视图中,我们可以使用Django的模型操作功能(ORM)来读取CSV文件,并将数据存储在数据库中。可以使用Python的csv模块来读取CSV文件的内容,并使用Django的ORM将数据存储在模型中。 第三步是创建一个模板(Template),用于将读取的CSV数据展示在web页面中。在模板中,我们可以使用Django模板语言(Template Language)来遍历CSV数据,并以表格或其他形式展示在页面上。通过将CSV数据与模板结合,可以实现将CSV文件数据展示在web页面中的功能。 第四步是配置URL路由,在项目的urls.py文件中添加相关URL路由,将请求映射到之前创建的视图函数上,从而在浏览器中访问对应的URL时触发视图函数的执行。 最后,需要运行Django项目并启动开发服务器,通过访问指定的URL来查看展示CSV数据的web页面。可以使用命令行指令 `python manage.py runserver` 来启动开发服务器。 综上所述,以上是将CSV文件Django框架搭建成web页面的一般步骤。可以通过创建模型、编写视图、设计模板以及配置URL路由等操作来实现这一功能。 ### 回答3: 要将CSV文件Django框架搭建为Web页面,需要完成以下步骤: 1. 创建Django项目:首先,在命令行中运行`django-admin startproject project_name`来创建一个Django项目。 2. 创建Django应用:然后,在项目目录下运行`python manage.py startapp app_name`来创建一个Django应用。 3. 定义模型:在Django应用的`models.py`文件中定义一个模型来表示CSV文件的数据结构。可以使用Django的Field类型来定义每个字段的类型和属性。 4. 数据库迁移:运行`python manage.py makemigrations`命令来创建数据迁移文件,并使用`python manage.py migrate`命令来将模型映射到数据库中。 5. 视图和URL:在Django应用的`views.py`文件中编写一个视图函数来处理请求和响应,读取CSV文件的数据并将其传递给模板。然后,在应用的`urls.py`文件中将URL路由到该视图函数。 6. 模板:在Django应用的`templates`目录中创建一个HTML模板文件,用于显示CSV文件的内容。可以使用Django模板语法来循环遍历CSV文件的数据并将其动态显示在网页上。 7. 静态文件:将静态文件(如样式表和JavaScript文件)放置在Django项目的`static`目录中,以便在网页中引用。 8. 运行项目:最后,在命令行中运行`python manage.py runserver`命令来启动Django开发服务器,然后在浏览器中访问相应的URL,就可以看到CSV文件以Web页面的形式展示出来了。 通过以上步骤,我们可以将CSV文件Django框架搭建为一个功能完善的Web页面,用户可以方便地查看、搜索和处理CSV文件的数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

思恋那个她

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值