You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新手求助:如何用Django实现网站页面路由与模板整合?

Django 多应用模板整合实现步骤

1. 注册应用到项目

打开项目根目录的settings.py,把windows和linux添加到INSTALLED_APPS列表:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 注册两个练习应用
    'windows',
    'linux',
]

2. 创建全局母版模板

在项目根目录新建templates文件夹(如果没有的话),并在其中创建base.html作为所有页面的基础框架:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>系统练习网站</title>
    <style>
        .nav-btn {
            display: inline-block;
            padding: 10px 20px;
            margin: 10px;
            background-color: #f0f0f0;
            text-decoration: none;
            color: #333;
            border-radius: 4px;
        }
        .nav-btn:hover {
            background-color: #e0e0e0;
        }
    </style>
</head>
<body>
    <!-- 顶部横向导航按钮 -->
    <div class="nav-bar">
        <a href="{% url 'windows:index' %}" class="nav-btn">Windows</a>
        <a href="{% url 'linux:index' %}" class="nav-btn">Linux</a>
    </div>
    <!-- 子模板内容注入区域 -->
    {% block content %}{% endblock %}
</body>
</html>

同时在settings.py的TEMPLATES配置里,确保DIRS包含这个templates路径:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates'],  # 新增这行
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

3. 改造应用内的模板

分别修改两个应用的模板文件,让它们继承母版模板:

Windows应用模板(windows/templates/windows/index.html)

{% extends 'base.html' %}

{% block content %}
    <h2>Windows相关内容</h2>
    <p>这里可以放置Windows系统的练习文本、教程或操作示例...</p>
{% endblock %}

Linux应用模板(linux/templates/linux/index.html)

{% extends 'base.html' %}

{% block content %}
    <h2>Linux相关内容</h2>
    <p>这里可以放置Linux系统的命令讲解、运维技巧或练习案例...</p>
{% endblock %}

4. 配置URL路由

项目根URL(urls.py)

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

urlpatterns = [
    path('admin/', admin.site.urls),
    # 分发两个应用的路由,并设置命名空间
    path('windows/', include('windows.urls', namespace='windows')),
    path('linux/', include('linux.urls', namespace='linux')),
    # 设置首页默认跳转到Windows页面(可根据需求调整)
    path('', include('windows.urls')),
]

Windows应用URL(windows/urls.py)

from django.urls import path
from . import views

app_name = 'windows'  # 命名空间,对应母版里的url调用
urlpatterns = [
    path('', views.index, name='index'),
]

Linux应用URL(linux/urls.py)

from django.urls import path
from . import views

app_name = 'linux'
urlpatterns = [
    path('', views.index, name='index'),
]

5. 编写视图函数

分别在两个应用的views.py中编写基础视图:

Windows应用视图(windows/views.py)

from django.shortcuts import render

def index(request):
    return render(request, 'windows/index.html')

Linux应用视图(linux/views.py)

from django.shortcuts import render

def index(request):
    return render(request, 'linux/index.html')

完成以上配置后,启动Django服务,访问首页就能看到横向的两个分类按钮,点击对应按钮会加载各自应用的内容,所有页面共享母版的导航栏。

内容的提问来源于stack exchange,提问作者Bilal Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 12:05:37