【Django笔记1】-视图(views)与模板(templates)
视图(views)与模板(templates)
1,视图(views)
将接收到的数据赋值给模板(渲染),再传递给浏览器。HTML代码可以直接放在views.py(文件名可任意更换),也可以放在templates中以实现逻辑代码与HTML文件的解耦。
HTML放在views.py中
创建views.py,之后输入以下代码:
from django.http import HttpResponse
from django.shortcuts import render def HelloWorld(request):
return HttpResponse('<html><body> hello world! </body></html>')
之后在urls.py中配置路由映射关系,输入以下代码:
from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from . import views urlpatterns = [
path('admin/', admin.site.urls),
url(r'^hello/$', views.HelloWorld)
]
之后打开网址 http://127.0.0.1:8001/hello/ 即可看到如下界面(地址与python manage.py runserver设定的地址相对应)

2,模板(templates)
在1中,HTML文件直接写入了views.py中,也可以将HTML文件写入templates中,实现业务逻辑与前端渲染文件的解耦。
HTML放入templates中
首先在项目中创建templates文件夹,此时项目的目录树结构为
TEST1
│ manage.py
│
├─templates
└─test1
│ asgi.py
│ settings.py
│ urls.py
│ views.py
│ wsgi.py
│ __init__.py
│
└─__pycache__
settings.cpython-36.pyc
urls.cpython-36.pyc
views.cpython-36.pyc
wsgi.cpython-36.pyc
__init__.cpython-36.pyc将templates在settings.py中注册,settings.py进行如下修改:
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中创建html文件,输入如下代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
hello world! <br>
{{name}}
</body>
</html>
修改views.py的代码,此处使用render方法
from django.http import HttpResponse
from django.shortcuts import render def HelloWorld(request):
return render(request, 'hello.html', {'name': 'tensor_zhang'})
#注意此处使用字典填充{{name}}变量,这是django特有的
在urls.py配置路由映射,由于我在这没有修改views.py的文件名以及其中的函数名,此次不用修改。
打开网址 http://127.0.0.1:8001/hello/ 即可看到如下界面

3,总结
views和templates将逻辑代码和html文件解耦,这样在对页面进行修改时,只需要专注于修改相应的前端html文件,而不用考虑对逻辑的修改。
页面的显示是由html文件控制的,只要对html文件进行修改,就可以得到想要的结果,比如将html文件改为:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> hello world! <br>
{{name}} <br> <!-- url跳转 -->
<a href="https://www.cnblogs.com/tensorzhang/">
tensor_zhang的博客园
</a> <!-- 提交文件 -->
<form>
<input type="file" name="myfile">
<input type="submit" value="提取文件">
</form> </body>
</html>
页面就会相应的发生变化

【Django笔记1】-视图(views)与模板(templates)的更多相关文章
- Django基础之视图(views)层、模板层
目录 Django基础之视图(views)层.模板层 JsonResponse 向前端返回一个json格式字符串的两种方式 重写Django中的json的某个方法 form表单上传文件 FBV与CBV ...
- Django笔记 —— 高级视图和URL配置
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...
- Django学习(二)---使用模板Templates
学会使用渲染模板的方法来显示html内容. 一.Templates是什么: HTML文件 使用了Django模板语言(Django Tamplate Language DTL) 可以使用第三方模板 二 ...
- Django入门3:视图views
1.获取用户请求数据 1.1 request.GET 获取request.method='GET'的数据 request.GET.get('name',None) 1.2 request.POST 获 ...
- django 中的视图(Views)
Views Django中views里面的代码就是一个一个函数逻辑, 处理客户端(浏览器)发送的HTTPRequest, 然后返回HTTPResponse, http请求中产生两个核心对象: http ...
- django在视图中使用模板
在视图中使用模板 在学习了模板系统的基础之后,现在让我们使用相关知识来创建视图. 重新打开我们在前一章在 mysite.views 中创建的 current_datetime 视图. 以下是其内容 ...
- Django:视图views(一)
1.环境搭建 在django中,视图负责与web请求进行交互 视图本质上是一个Python函数,定义在booktest/views.py.通过django1/urls.py路由到该视图中. 首先经过创 ...
- Django-1版本的路由层、Django的视图层和模板层
一.Django-1版本的路由层(URLconf) URL配置(URLconf)就像Django所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:我们就是以这种方式告诉Dja ...
- Django笔记 —— 模板高级进阶
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...
随机推荐
- 使用MCSManager搭建Minecraft服务器
目录 一.准备工作 1.MCSManager Windows环境下安装 Linux安装 2.Minecraft服务端 3.Java 二.配置 1.登录面板 2.上传服务端 3.服务端的配置 三.开启服 ...
- Watch the Wifi: Visually Stunning Look at the Digital World Invading Cities (video)
http://singularityhub.com/2011/04/01/watch-the-wifi-visually-stunning-look-at-the-digital-world-inva ...
- IT-ebooks free download website & IT 电子书籍免费下载网站
free ebooks of programming 1. http://www.it-ebooks.info/ http://www.it-ebooks-api.info/ 2. http://ww ...
- 使用 js 实现十大排序算法: 基数排序
使用 js 实现十大排序算法: 基数排序 基数排序 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!
- webpack async load modules & dynamic code splitting
webpack async load modules & dynamic code splitting webpack 按需/异步加载/Code Splitting webpack loade ...
- css useful skills blogs
css useful skills blogs https://caniuse.com/ https://css-tricks.com https://css-tricks.com/almanac/p ...
- js 位掩码
原文 定义掩码 const mask0 = parseInt("00000001", 2); const mask1 = parseInt("00000010" ...
- perl 在windows上获取当前桌面壁纸
更多 #!/usr/bin/perl # 在windows获取当前的桌面壁纸 # See also: https://www.winhelponline.com/blog/find-current-w ...
- django学习-15.ORM查询方法汇总
1.前言 django的ORM框架提供的查询数据库表数据的方法很多,不同的方法返回的结果也不太一样,不同方法都有各自对应的使用场景. 主要常用的查询方法个数是13个,按照特点分为这4类: 方法返回值是 ...
- Python算法_递归:汉诺塔
游戏链接:https://zhangxiaoleiv.github.io/app/TowerOfHanoi/Hanoi.html 汉诺塔游戏算法: 1 def hanoi(n,x,y,z): 2 if ...