【问题标题】:CSS is only applying on few html files and not restCSS仅适用于少数html文件而不是休息
【发布时间】:2021-07-22 16:03:08
【问题描述】:

所以我正在建立一个个人网站并使用 Materialize 进行网页设计。起初它很好,我的页面看起来不错,但后来我添加了一些新页面,我发现这些新页面中没有应用 css,任何人都可以帮助我解决这个问题。

其实都是同一个页面(categories.html),只是路径不同。

header.html(主html文件,还没有改名)

<<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <!--Import Google Icon Font-->
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
    
    <!--Import materialize.css-->
    <link type="text/css" rel="stylesheet" href="static/main/materialize.css"  media="screen,projection"/>
    
   
  </head>  

  <body>

    {% load static %}

    {% include "main/includes/navbar.html" %}

    {% include "main/includes/messages.html" %}
    
    <main>
      <div style="background-image: url('https://www.google.com/url?sa=i&url=https%3A%2F%2Fwallpapersafari.com%2Fw%2FcU6JWo&psig=AOvVaw1eBAulQvnXOrIK1yQueVX5&ust=1623841457736000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCPje9_--mfECFQAAAAAdAAAAABAD')">
        <div class = "container">
          <br>
          {% block content %}
          {% endblock %}
        </div>
      </div>  
    </main>

    {% include "main/includes/footer.html" %}

    <script type="text/javascript" src="static/main/materialize.js"></script>
  </body>
</html>

views.py

from django.shortcuts import render, redirect
from django.http import HttpResponse
from .models import Item, ItemSeries, ItemCategory
from django.contrib.auth.forms import AuthenticationForm
from django.contrib.auth import login, logout, authenticate
from django.contrib import messages
from .forms import NewUserForm


def single_slug(request, single_slug):
    categories = [c.category_slug for c in ItemCategory.objects.all()]
    if single_slug in categories:
        matching_series = ItemSeries.objects.filter(item_category__category_slug=single_slug)
        
        series_urls = {}
        for m in matching_series.all():
            part_one = Item.objects.filter(item_series__item_series=m.item_series).earliest("item_update")
            series_urls[m] = part_one.item_slug

        return render(request,
                      "main/category.html",
                      {"part_ones": series_urls})   


    items = [c.item_slug for c in Item.objects.all()]
    if single_slug in items:
        this_item = Item.objects.get(item_slug=single_slug)

        return render(request,
                      "main/item.html",
                      {"item":this_item})   

    return HttpResponse(f"{single_slug} does not correspond to anything.")

def product(request):
    return render(request = request,
                  template_name = "main/categories.html",
                  context ={"categories": ItemCategory.objects.all})

def homepage(request):
    return render(request = request,
                  template_name = "main/categories.html",
                  context ={"categories": ItemCategory.objects.all})    

def about(request):
    return render(request = request,
                  template_name = "main/about.html",
                  context ={"categories": ItemCategory.objects.all})    

def contact(request):
    return render(request = request,
                  template_name = "main/contact.html",
                  context ={"categories": ItemCategory.objects.all})    

def register(request):
    if request.method == "POST":
        form = NewUserForm(request.POST)
        if form.is_valid():
            user = form.save()
            username = form.cleaned_data.get('username')
            messages.success(request, f"New Account Created: {username}")
            login(request, user)
            messages.info(request, f"You are now logged in as: {username}")
            return redirect("main:homepage")
        else:
            for msg in form.error_messages:
                messages.error(request, f"{msg}: {form.error_messages[msg]}")   

    form = NewUserForm
    return render(request,
                  "main/register.html",
                  context = {"form": form})

def logout_request(request):
    logout(request)
    messages.info(request, "Logged out successfully!")
    return redirect("main:homepage")

def login_request(request):
    if request.method == "POST":
        form = AuthenticationForm(request, data = request.POST)
        if form.is_valid():
            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password')
            user = authenticate(username = username, password = password)
            if user is not None:
                login(request, user)
                messages.info(request, f"You are now logged in as: {username}")
                return redirect("main:homepage")
            else:
                messages.error(request, "Invalid username or password") 
        else:
            messages.error(request, "Invalid username or password")     
    form = AuthenticationForm()
    return render(request, 
                  "main/login.html",
                  {"form": form})

navbar.html

  {% load static %}

  
  <!-- Dropdown Structure -->
  <ul id='dropdown1' class='dropdown-content'>
    <li><a href="#!">one</a></li>
    <li><a href="#!">two</a></li>
    <li class="divider" tabindex="-1"></li>
    <li><a href="#!">three</a></li>
    <li><a href="#!"><i class="material-icons">view_module</i>four</a></li>
    <li><a href="#!"><i class="material-icons">cloud</i>five</a></li>
  </ul>
        

<nav>
  <div id="nav-wrapper">

    <div>
      <ul class="center hide-on-med-and-down">
        <li>
          <a href="">Home</a>
        </li>
        <li>
          <a href="about/">About Us</a>
        </li>
        <li>
          <a href="product/">Products</a>
        </li>
        <li>
          <a href="services/">Services</a>
        </li>
        <li>
          <a href="contact/">Contact</a>
        </li>
        <li>
          <a class='dropdown-trigger btn' href='#' data-target='dropdown1'>Drop Me!</a>
        </li>
      </ul>
    </div>
  </div>
</nav>

categories.html

{% extends "main/header.html" %}

{% block content %}

  <div class="row">
        {% for cat in categories %}
            <div class="col s12 m6 l4">
              <a href="{{cat.category_slug}}", style="color:#000">
                <div class="card hoverable">
                    <div class="card-content">
                        <div class="card-title">{{cat.item_category}}</div>
                        <p>{{cat.category_summary}}</p>
                    </div>  
                </div>
              </a>  
            </div>
        {% endfor %}    
  </div>

{% endblock %}

When CSS worked This is home page

When CSS did not work This is the same homepage after clicking 'about us' link form navbar

我被卡住了,不知道下一步该怎么做,任何帮助都会很感激。

【问题讨论】:

标签: python html css django


【解决方案1】:

根据上面的评论,我改变了我的header.html,

<<!DOCTYPE html> <html>   <head>    <meta charset="utf-8">
    <!--Import Google Icon Font-->
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
    
    <!--Import materialize.css-->
    <link type="text/css" rel="stylesheet" href="/static/main/materialize.css"  media="screen,projection"/>
    
      </head>  

  <body>

    {% load static %}

    {% include "main/includes/navbar.html" %}

    {% include "main/includes/messages.html" %}
    
    <main>
      <div style="background-image: url('https://www.google.com/url?sa=i&url=https%3A%2F%2Fwallpapersafari.com%2Fw%2FcU6JWo&psig=AOvVaw1eBAulQvnXOrIK1yQueVX5&ust=1623841457736000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCPje9_--mfECFQAAAAAdAAAAABAD')">
        <div class = "container">
          <br>
          {% block content %}
          {% endblock %}
        </div>
      </div>  
    </main>

    {% include "main/includes/footer.html" %}

    <script type="text/javascript" src="/static/main/materialize.js"></script>   </body> </html>

注意css和js链接标签的href。

【讨论】:

    【解决方案2】:

    我在这里看到的一些事情看起来不正确。第 1 点,您是否从您的基地继承了您的模板?

    {% extends 'base.html' %}
    

    这是你应该调用你的 materialize.css 的地方(在基本模板中)

    1. 加载静态在错误的地方,你在链接到css之后调用静态,加载静态应该在模板的最顶部:

      {% extends 'base.html' %} {% load static %}

    您的 DOCTYPE 中有一个额外的开口 V 形。

    1. 在关闭body标签之前将物化js放在你的基础模板中。默认情况下,Django 继承了默认的基本模板,所以这就是你可能缺少的。

    2. 如果我误解了,而您只想为该标题模板调用 materialize.css,您可以在调用 load static 之后使用标签

      {% block extra_css %}&lt;link rel="stylesheet" href="{% static 'main/materialize.css' %}"&gt; {% endblock extra_css %}

    【讨论】:

      【解决方案3】:

      这可能会有所帮助:

      {% load static %} 高于 doctype 标签!

      {% load static %}
      <!DOCTYPE html> 
      <html>
         <head>
            <meta charset="utf-8">
        <!--Import Google Icon Font-->
            <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
        <!--Import materialize.css-->
            <link type="text/css" rel="stylesheet" href="{% static 'main/materialize.css' %}"  media="screen,projection"/>
         </head>
         <body>
        {% include "main/includes/navbar.html" %}
        {% include "main/includes/messages.html" %}
            <main>
               <div style="background-image: url('https://www.google.com/url?sa=i&url=https%3A%2F%2Fwallpapersafari.com%2Fw%2FcU6JWo&psig=AOvVaw1eBAulQvnXOrIK1yQueVX5&ust=1623841457736000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCPje9_--mfECFQAAAAAdAAAAABAD')">
                  <div class = "container">
                     <br>
                 {% block content %}
                 {% endblock %}
                  </div>
               </div>
            </main>
        {% include "main/includes/footer.html" %}
            <script type="text/javascript" src="{% static 'main/materialize.js' %}"></script>   
         </body>
      </html>
      

      在每个 html 页面中 {% load static %} 在 {% block content %} 和页面的 html 之上!

      静态文件路径: {% static '应用名称/文件夹名称' %}

      希望你能理解!还可以在 youtube 上寻找一些教程!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-24
        • 1970-01-01
        • 2014-02-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多