templates模板
前面只是返回了一个简单的字符串,但是一个正常的网站应该都是有多个html页面组成。
如果想要django放回一个html页面,该怎么办呢?
django给我们提供了一个render
的方法
url.py
from django.urls import path from app01 import views urlpatterns = [ # path('admin/', admin.site.urls), # 假如用户访问www.xxx.com/index 就会执行侯敏的views.index这个函数 path('index/', views.index), # 当我们有多个路由时,只需要定义好url,并且定义好对应的函数即可 path('user/list', views.user_list), ]
app01\views.py
from django.shortcuts import render, HttpResponse def index(request): return HttpResponse('hello world') def user_list(request): # render 返回一个html页面 # render 第一个参数为定义函数是传入的request 第二个参数为你要返回的页面 # 会从app目录下的templates目录下寻找user_list.html # 根据app的注册顺序逐一去寻找他们templates目录中寻找,找不到报错 return render(request, "user_list.html")
app01\templates\user_list.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>user_list</title> </head> <body> <h1>用户列表</h1> </body> </html>
访问http://127.0.0.1:8000/user/list
前面说到了 django会默认会从app目录下的templates目录下寻找html页面
这与settings的配置有关
在创建项目一节中提到了两种创建django项目的方式的不同
我们这里将TEMPLATES.DIRS
的值修改
settings.py
import os TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(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', ], }, }, ]
templates(manage.py的同级目录)\user_list.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>user_list</title> </head> <body> <h1>用户列表,根目录</h1> </body> </html>
再次访问http://127.0.0.1:8000/user/list
-
模板查找顺序
- 假如说settings.py 做了上述修改
- 先从manage.py的同级目录的templates下寻找
- 找不到根据app的注册顺序逐一去寻找他们templates目录中寻找
- 没做修改
- 根据app的注册顺序逐一去寻找他们templates目录中寻找,找不到报错
- 假如说settings.py 做了上述修改
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?