视图(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,总结

  1. views和templates将逻辑代码和html文件解耦,这样在对页面进行修改时,只需要专注于修改相应的前端html文件,而不用考虑对逻辑的修改。

  2. 页面的显示是由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)的更多相关文章

  1. Django基础之视图(views)层、模板层

    目录 Django基础之视图(views)层.模板层 JsonResponse 向前端返回一个json格式字符串的两种方式 重写Django中的json的某个方法 form表单上传文件 FBV与CBV ...

  2. Django笔记 —— 高级视图和URL配置

    最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...

  3. Django学习(二)---使用模板Templates

    学会使用渲染模板的方法来显示html内容. 一.Templates是什么: HTML文件 使用了Django模板语言(Django Tamplate Language DTL) 可以使用第三方模板 二 ...

  4. Django入门3:视图views

    1.获取用户请求数据 1.1 request.GET 获取request.method='GET'的数据 request.GET.get('name',None) 1.2 request.POST 获 ...

  5. django 中的视图(Views)

    Views Django中views里面的代码就是一个一个函数逻辑, 处理客户端(浏览器)发送的HTTPRequest, 然后返回HTTPResponse, http请求中产生两个核心对象: http ...

  6. django在视图中使用模板

    在视图中使用模板   在学习了模板系统的基础之后,现在让我们使用相关知识来创建视图. 重新打开我们在前一章在 mysite.views 中创建的 current_datetime 视图. 以下是其内容 ...

  7. Django:视图views(一)

    1.环境搭建 在django中,视图负责与web请求进行交互 视图本质上是一个Python函数,定义在booktest/views.py.通过django1/urls.py路由到该视图中. 首先经过创 ...

  8. Django-1版本的路由层、Django的视图层和模板层

    一.Django-1版本的路由层(URLconf) URL配置(URLconf)就像Django所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:我们就是以这种方式告诉Dja ...

  9. Django笔记 —— 模板高级进阶

    最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...

随机推荐

  1. Worktile vs Teambition

    Worktile vs Teambition 项目管理.团队协作 企业服务.协同办公 worktile 易成科技 北京易成星光科技有限公司 https://www.tianyancha.com/com ...

  2. VS Code All in One

    VS Code All in One Visual Studio Code All in One https://github.com/xgqfrms/vscode/ VS Code Shift + ...

  3. Markdown & Static Site Generator

    Markdown & Static Site Generator https://www.gitbook.com/ https://vuepress.vuejs.org/ https://ww ...

  4. Mosquitto

    mosquitto可连接远程服务器及本地服务器. mosquitto可在一个节点内建立一个连接用于收发,也可在一个节点内建立多个连接用于收发.建立一个连接用于收发时,会有初始部分帧的延迟.(可能由于内 ...

  5. Ubuntu 下安装Anaconda + 显卡驱动 + CUDA + CUDNN + 离线安装环境

    写来给自己备忘,并不是什么教程- .- 下载安装包 Anaconda:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 显卡驱动:https ...

  6. idea配置阿里maven镜像

    首先打开IDEA安装路径下的:"\plugins\maven\lib\maven3\conf\settings.xml" 找到里面的mirror配置,进行修改如下: <mir ...

  7. close() 和fluse()区别

    1.close()默认包含了一次flush()操作,关闭之后,就不能再写入了. 2.flush()刷新,flush()之后,可以接着写入. 3.缓冲区默认大小是8192字节,如果小于8192字节,不会 ...

  8. docker数据卷的操作

    一般情况下会比较频繁的修改容器内部的文件 频繁docker cp 不太方便 使用数据卷可以将宿机的某个目录映射至容器的目录 修改会方便点 1.创建数据卷 docker volume create 数据 ...

  9. 1.代码规范之 if 语句编写

    最近在看项目代码的时候, 看到需要判断的地方,出现了if的多重嵌套,  甚至是出现了十几层的嵌套, 代码的阅读性非常之差. 简单的举个例子(这里只是两层的嵌套): public class demo ...

  10. JDBC 用PreparedStatement语句动态操作SQL语句

    https://blog.csdn.net/u014453898/article/details/79038187 1.Statement 和 PreparedStatement: Statement ...