光返回一堆文字不是我们想要的,最终我们需要返回一个个html页面给用户。上一节我们知道了MTV中的V,也就是view函数,这一节我们就一起来看看MTV模型中的T,也就是template,它专门负责返回给用户的内容。
我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。
应用级别templates
创建templates文件夹
这里使用的还是上一节的App项目,创建App/templates
文件夹,并点击右键把这个文件夹设定为template folder
。这样设定的好处就是在需要应用templates文件的时候pycharm会自动提示。
创建index.html文件
在刚才的templates文件夹中创建一个html文件index.html,待会会返回给用户。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
<li>This</li>
<li>is</li>
<li>so</li>
<li>much</li>
<li>fun</li>
</ul>
</body>
</html>
如果是pycharm专业版,也支持sublime里面相同的前端快捷键,例如 ul>li*5
创建view函数
在views.py
中加下面这个函数,render函数用来渲染html,第一个参数同样是request,第二个参数是template文件的名字
def index(request):
return render(request,'index.html')
其中因为有了第一步添加templates文件夹的操作,这里的第二个参数pycharm会自动提示
创建路由规则
在urls.py
中加入下面这条路由规则,当用户访问http://127.0.0.1:8000/index.html/
的时候用刚才创建的index函数来响应
path('index.html/', views.index)
验证结果
在浏览器访问http://127.0.0.1:8000/index.html/
会返回正确页面
如果忘记了,浏览器会自动把url后面的斜线加上
这里只是本地可以访问,如果想在所有网口上监听可以在启动项目的时候采用下面的方式
python manager.py runserver 0.0.0.0:8000
项目级别templates
也可以直接在App
的上一级,也就是HelloDjango
创建一个templates文件夹。
创建templates文件夹
同样需要将这个文件夹加入到template folder
但是因为这个templates目录和App/views.py
并不在同一层目录,所以不能直接使用,需要先在全局注册一下这个templates文件夹
注册文件夹
在全局配置文件settings.py
中修改TEMPLATES
的配置,添加刚才创建的文件夹的绝对路径
路径建议都用BASE_DIR配合相对路径来完成
创建模板文件
在刚才创建的templates目录中添加haha.html
文件
创建路由和view函数
路由和view函数按照之前的方法进行添加
view函数
路由
验证结果
启动项目后,在浏览器访问http://127.0.0.1:8000/haha.html/
成功返回页面
两种template方式选哪种?
因为模板是可以被继承的,所以我们优先采用第二种全局的方式去定义templates文件夹。
总结
templates的引入让我们可以根据用户请求的url返回不同的html文件,但是假如一个项目有几十上百个页面,假如都用同一个路由和view文件,会造成文件结构不清晰难以维护。下一节我们一起来看看如何对一个大项目进行拆分。