Django 框架:无法加载 'services' 页面

Django framework: unable to load 'services' page

我正在做一个 Django 项目。

我认为在django项目中使用'services'这个词有一些问题。请查看您是否可以在项目中找到所需的一些更正。

项目名称是你好。还有一个附加应用程序“home”。

当我导航到 索引、联系人或关于 页面时,它们都按预期工作(加载)。

我正在使用以下列表项(在 base.html 中)导航到“服务”页面:

<li><a class="dropdown-item" href="/services">Ice Cream</a></li>

但是 services 页面没有加载。如果我将 'services' 更改为 'service',那么它 works 照常工作。它给出了以下错误:

以下是部分文件内容:

Hello->urls.py

from django.contrib import admin
from django.urls import path, include

admin.site.site_header = "Harry Ice Cream Admin"
admin.site.site_title = "Harry Ice Cream Admin Portal"
admin.site.index_title = "Welcome to Harry Ice Creams!"

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('home.urls')),
]

home->urls.py

from django.contrib import admin
from django.urls import path
from home import views

urlpatterns = [
    path('', views.index, name='home'),
    path('about', views.about, name='about'),
    path('services', views.services, name='services'),
    path('contact', views.contact, name='contact'),
]

home->views.py

from django.shortcuts import render, HttpResponse

# Create your views here.
def index(request):
    context = {
    }
    return render(request, 'index.html',context)
    #return HttpResponse("This is homepage")

def about(request):
    context = {
    }
    return render(request, 'about.html',context)

def services(request):
    context = {
    }
    return render(request, 'services.html',context)

def contact(request):
    context = {
    }
    return render(request, 'contact.html',context)

templates->index.html

{% extends 'base.html' %}

{% block title %} Home {% endblock title %}

{% block body %}
This is body content of index page.
{% endblock body %}

templates->about.html

{% extends 'base.html' %}

{% block title %} About {% endblock title %}

{% block body %}
This is body content of about page.
{% endblock body %}

templates->services.html

{% extends 'base.html' %}

{% block title %} About {% endblock title %}

{% block body %}
This is body content of services page.
{% endblock body %}

templates->contact.html

{% extends 'base.html' %}

{% block title %} About {% endblock title %}

{% block body %}
This is body content of contactpage.
{% endblock body %}

templates->base.html

<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- Bootstrap CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">

    <title>{% block title %} {% endblock title %} | Harry IceCreams</title>
  </head>
  <body>
    <!--nav class="navbar navbar-expand-lg navbar-light bg-light"-->
    <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
        <div class="container-fluid">
          <a class="navbar-brand" href="#">Harry Ice Creams</a>
          <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
          </button>
          <div class="collapse navbar-collapse" id="navbarSupportedContent">
            <ul class="navbar-nav me-auto mb-2 mb-lg-0">
              <li class="nav-item">
                <a class="nav-link active" aria-current="page" href="/">Home</a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="/about">About Us</a>
              </li>
              <li class="nav-item dropdown">
                <a class="nav-link dropdown-toggle" href="/services" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                  Services
                </a>
                <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
                  <li><a class="dropdown-item" href="/services">Ice Cream</a></li>
                  <li><a class="dropdown-item" href="#">Softy</a></li>
                  <li><hr class="dropdown-divider"></li>
                  <li><a class="dropdown-item" href="#">Family Pack</a></li>
                </ul>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="/contact">Contact Us</a>
              </li>

            </ul>
            <form class="d-flex">
              <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
              <button class="btn btn-outline-success" type="submit">Search</button>
            </form>
          </div>
        </div>
    </nav>

    {% block body %} {% endblock body%}
    
    <!-- Optional JavaScript; choose one of the two! -->

    <!-- Option 1: Bootstrap Bundle with Popper -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>

    <!-- Option 2: Separate Popper and Bootstrap JS -->
    <!--
    <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.10.2/dist/umd/popper.min.js" integrity="sha384-7+zCNj/IqJ95wo16oMtfsKbZ9ccEh31eOz1HGyDuCQ6wgnyJNSYdrPa03rtR1zdB" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.min.js" integrity="sha384-QJHtvGhmr9XOIpI6YVutG+2QOK9T+ZnN4kzFN1RtK3zEFEIsxhlmWl5/YESvpZ13" crossorigin="anonymous"></script>
    -->
  </body>
</html>

你可以试试http:127.0.0.1:8000/services

不是这个http:127.0.0.1:8000/services/

删除最后一个 url /

如果你想让它工作 http:127.0.0.1:8000/services/ 你需要在 urls.py 文件中编辑以下内容。

urlpatterns = [
    path('', views.index, name='home'),
    path('about', views.about, name='about'),
    path('services/', views.services, name='services'),
    path('contact', views.contact, name='contact'),
]

如您所见,我将 / 放在“服务”url 路径的末尾。

<li><a class="dropdown-item" href="/services">Ice Cream</a></li>

为此,请执行以下操作。

<li><a class="dropdown-item" href="{% url 'services' %}">Ice Cream</a></li>

这个 {% url 'services' %} 来自你的 services 的 name url 路径.