Django里面,多个APP的url设置,每个APP单独对应HTML设置

Django 中采用了 MVT (Model-Template-View) 设计模式,类似于 MVC,但有一些区别:

  • Model (模型):与数据库交互,处理数据的创建、读取、更新、删除。

  • Template (模板):负责页面渲染,生成最终的 HTML 内容。

  • View (视图):Django 的 View 更偏向于控制器的角色,接收请求并决定使用哪个模板和数据。

流程:

  1. 用户访问 URL,请求被 Django 的 urls.py 映射到相应的 View。

  2. View 处理业务逻辑,调用 Model 获取数据。

  3. View 将数据传递给 Template。

  4. Template 渲染 HTML,最终返回给用户

以下是Django中多个APP的URL设置及HTML模板映射实现:

1、项目根目录 urls.py

python 复制代码
# 项目根目录 urls.py
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('app1/', include('app01.urls', namespace='app1')),  # 包含app01的URL
    path('app2/', include('app02.urls', namespace='app2')),  # 包含app02的URL
]

2、app01/views.py

python 复制代码
# app01/views.py
from django.shortcuts import render

def index(request):
    return render(request, 'app01/index.html')  # 渲染app01的index.html

def student(request):
    return render(request, 'app01/student.html')  # 渲染app01的student.html

3、app01/urls.py

python 复制代码
# app01/urls.py
from django.urls import path
from . import views

app_name = 'app01'  # 命名空间
urlpatterns = [
    path('', views.index, name='index'),  # 根路径对应index视图
    path('student/', views.student, name='student'),  # 子路径对应student视图
]

4、app02/views.py

python 复制代码
# app02/views.py
from django.shortcuts import render

def home(request):
    return render(request, 'app02/home.html')  # 渲染app02的home.html

5、app02/urls.py

python 复制代码
# app02/urls.py
from django.urls import path
from . import views

app_name = 'app02'  # 命名空间
urlpatterns = [
    path('', views.home, name='home'),  # 根路径对应home视图
]

​​代码说明:

  1. 项目根目录的urls.py通过include()包含各APP的路由配置,实现路径分发。
  2. 每个APP独立维护urls.py和views.py,通过命名空间避免路由冲突。
  3. 视图函数使用render()渲染对应APP目录下的HTML模板(如app01/index.html)。
  4. 命名空间(app_name)支持反向解析URL(如{% url 'app1:index' %})。
  5. 通过路径分发(如path('app1/', include('app01.urls')))实现多APP路由隔离。
相关推荐
短剑重铸之日7 分钟前
《7天学会Redis》Day 4 - 高可用架构设计与实践
数据库·redis·缓存
NineData28 分钟前
第三届数据库编程大赛-八强决赛成绩揭晓
数据库·算法·代码规范
bjzhang7528 分钟前
使用 HTML + JavaScript 实现在线知识挑战
前端·javascript·html
難釋懷32 分钟前
认识Redis
数据库·redis·缓存
超级种码41 分钟前
Redis:Redis脚本
数据库·redis·缓存
想唱rap1 小时前
表的约束条件
linux·数据库·mysql·ubuntu·bash
超级种码1 小时前
Redis:Redis 命令详解
数据库·redis·bootstrap
qq_401700411 小时前
Qt 事件处理机制
java·数据库·qt
Elastic 中国社区官方博客1 小时前
使用 jina-embeddings-v3 和 Elasticsearch 进行多语言搜索
大数据·数据库·人工智能·elasticsearch·搜索引擎·全文检索·jina
深海小黄鱼2 小时前
mysql 导入csv文件太慢, Error Code: 1290.
数据库·mysql