Menu
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

将 CSS 文件添加到项目中


项目 - 我的网球俱乐部

如果您已按照整个 Django 教程中的步骤进行操作,您将在计算机上拥有一个 my_tennis_club 项目,其中包含 5 个成员

我们希望将样式表添加到此项目中,并将其放入 mystaticfiles 文件夹中

my_tennis_club
    manage.py
    my_tennis_club/
    members/
    mystaticfiles/
        mystyles.css

CSS 文件的名称由您选择,在本项目中,我们将其称为 mystyles.css

打开 CSS 文件并插入以下内容

my_tennis_club/mystaticfiles/mystyles.css:

body {
  background-color: violet;
}

修改主模板

现在您有了 css 文件,下一步将是将此文件包含在主模板中

打开主模板文件并添加以下内容

my_tennis_club/members/templates/master.html:

{% load static %}
<!DOCTYPE html>
<html>
<head>
  <title>{% block title %}{% endblock %}</title>
  <link rel="stylesheet" href="{% static 'mystyles.css' %}">  
</head>
<body>

{% block content %}
{% endblock %}

</body>
</html>

检查设置

确保您的 settings.py 文件包含一个 STATICFILES_DIRS 列表,其中包含对根目录上的 mystaticfiles 文件夹的引用,并且您已指定了 STATICFILES_ROOT 文件夹

my_tennis_club/my_tennis_club/settings.py:

.
.
STATIC_ROOT = BASE_DIR / 'productionfiles'

STATIC_URL = 'static/'

#Add this in your settings.py file:
STATICFILES_DIRS = [
    BASE_DIR / 'mystaticfiles'
]
.
.

收集静态文件

每次您对静态文件进行更改时,您都必须运行 collectstatic 命令以使更改生效

py manage.py collectstatic

如果您之前在项目中执行过此命令,Django 会提示您一个问题

您已请求将静态文件收集到目标
您设置中指定的位置

    C:\Users\Your Name\myworld\my_tennis_club\productionfiles

这将覆盖现有文件!
您确定要执行此操作吗?

键入“yes”继续,或键入“no”取消

键入“yes”。这将更新对静态文件所做的任何更改,并给出以下结果

1 个静态文件已复制到“C:\Users\Your Name\minverden\my_tennis_club\productionfiles”,132 个未修改。

现在,如果您运行项目

py manage.py runserver

它将显示如下

如果您已在自己的计算机上按照所有步骤进行操作,您可以在自己的浏览器中查看结果

在浏览器窗口中,在地址栏中键入 127.0.0.1:8000/members/


为样式增添魅力!

在上面的示例中,我们向您展示了如何将样式表包含到您的项目中。

我们最终得到了一个紫色的网页,但 CSS 可以做的不仅仅是更改背景颜色。

我们希望对样式进行更多操作,并最终得到以下结果

首先,将 mystyles.css 文件的内容替换为以下内容

my_tennis_club/mystaticfiles/mystyles.css:

@import url('https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@400;600&display=swap');
body {
  margin:0;
  font: 600 18px 'Source Sans Pro', sans-serif;
  letter-spacing: 0.64px;
  color: #585d74;
}
.topnav {
  background-color:#375BDC;
  color:#ffffff;
  padding:10px;
}
.topnav a:link, .topnav a:visited {
  text-decoration: none;
  color: #ffffff; 
}
.topnav a:hover, .topnav a:active {
  text-decoration: underline;
}
.mycard {
  background-color: #f1f1f1;
  background-image: linear-gradient(to bottom, #375BDC, #4D70EF); 
  background-size: 100% 120px;
  background-repeat: no-repeat;
  margin: 40px auto;
  width: 350px;
  border-radius: 5px;
  box-shadow: 0 5px 7px -1px rgba(51, 51, 51, 0.23); 
  padding: 20px;
}
.mycard h1 {
  text-align: center;
  color:#ffffff;
  margin:20px 0 60px 0;
}
ul {
  list-style-type: none;
  padding: 0;
  margin: 0;
}
li {
  background-color: #ffffff;
  background-image: linear-gradient(to right, #375BDC, #4D70EF); 
  background-size: 50px 60px;
  background-repeat: no-repeat;
  cursor: pointer;
  transition: transform .25s;
  border-radius: 5px;
  box-shadow: 0 5px 7px -1px rgba(51, 51, 51, 0.23);
  padding: 15px;
  padding-left: 70px;
  margin-top: 5px;
}
li:hover {
  transform: scale(1.1);
}
a:link, a:visited {
  color: #375BDC; 
}
.main, .main h1 {
  text-align:center;
  color:#375BDC;
}

修改模板

您还必须对模板进行一些更改

我们希望所有页面都具有相同的顶部导航,因此我们将顶部导航插入 master.html

my_tennis_club/members/templates/master.html:

{% load static %}
<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" href="{% static 'mystyles.css' %}">
  <title>{% block title %}{% endblock %}</title>
</head>
<body>

<div class="topnav">
  <a href="/">HOME</a> |
  <a href="/members">MEMBERS</a>
</div>

{% block content %}
{% endblock %}

</body>
</html>

成员

all_members.html 中,我们希望对 HTML 代码进行一些更改。

成员被放在一个 div 元素中,链接成为带有 onclick 属性的列表项。

我们还希望删除导航,因为现在它已成为主模板的一部分。

my_tennis_club/members/templates/all_members.html:

{% extends "master.html" %}

{% block title %}
  My Tennis Club - List of all members
{% endblock %}


{% block content %}
  <div class="mycard">
    <h1>Members</h1>
    <ul>
      {% for x in mymembers %}
        <li onclick="window.location = 'details/{{ x.id }}'">{{ x.firstname }} {{ x.lastname }}</li>
      {% endfor %}
    </ul>
  </div>
{% endblock %}

细节

details.html 中,我们将成员详细信息放在一个 div 元素中,并删除返回成员的链接,因为现在它已成为主模板中的导航的一部分。

my_tennis_club/members/templates/details.html:

{% extends "master.html" %}

{% block title %}
  Details about {{ mymember.firstname }} {{ mymember.lastname }}
{% endblock %}

{% block content %}
  <div class="mycard">
    <h1>{{ mymember.firstname }} {{ mymember.lastname }}</h1>
    <p>Phone {{ mymember.phone }}</p>
    <p>Member since: {{ mymember.joined_date }}</p>
  </div>
{% endblock %}  

main.html 模板中,我们将一些 HTML 代码放在一个 div 元素中

my_tennis_club/members/templates/main.html:

{% extends "master.html" %}

{% block title %}
  My Tennis Club
{% endblock %}

{% block content %}
  <div class="main">
    <h1>My Tennis Club</h1>

    <h3>Members</h3>
  
    <p>Check out all our <a href="members/">members</a></p>
  </div>
{% endblock %}

收集静态文件

由于我们对静态 mystyles.css 文件进行了一些更改,因此我们必须运行 collectstatic 命令以使更改生效

py manage.py collectstatic

现在,如果您运行项目

py manage.py runserver

您可以看到结果应该是什么样子

或者,如果您已在自己的计算机上按照所有步骤进行操作,您可以在自己的浏览器中查看结果

在浏览器窗口中,在地址栏中键入 127.0.0.1:8000/members/



×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.