新手求助:如何用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
相关产品推荐
相关产品推荐

