视图(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. Internationalization API & ECMA-402

    Internationalization API & ECMA-402 i18n https://caniuse.com/?search=Internationalization API In ...

  2. free online linux terminal & github cli online

    free online linux terminal & github cli online gitpod https://www.gitpod.io/features/ https://bc ...

  3. Mila Fletcher:日常理财应注意的五点

    米拉·弗莱彻于2007年毕业于耶鲁大学,她是一名真正意义上的法学博士,在校期间获得了马歇尔奖学金,毕业后曾在美国多家知名律师事务所任职,目前就职于星盟全球投资公司,专注于帮助公司和客户提供法务咨询,他 ...

  4. 为什么说NGK引领全球数字资产财富革命

    进入2020年,区块链万业迸发出巨大的能量,事实上区块链和数字经济正是未来全球财富的新方向.区块链和数字货币的增值空间巨大,是数字时代新的经济增长点.目前,全球衍生品市场价值532万亿美元,全球债务市 ...

  5. 专注于大数据分析和数字基建,星盟UICI切入资产管理领域

    资产管理行业体系庞大,按领域可以大致分为公募.私募.券商.保险.银行.信托六大领域.面对六大领域百万亿级市场,近年来,也出现了不少初创公司针对资产管理的细分领域提供专有解决方案.而星盟全球投资公司就是 ...

  6. 若依管理系统RuoYi-Vue(二):权限系统设计详解

    若依Vue系统中的权限管理部分的功能都集中在了系统管理菜单模块中,如下图所示.其中权限部分主要涉及到了用户管理.角色管理.菜单管理.部门管理这四个部分. 一.若依Vue系统中的权限分类 根据观察,若依 ...

  7. C++算法代码——n的全排列/全排列问题

    题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1541 题目描述 输入一个整数n,输出的n(n<=100)的全排列. 输入 输入 ...

  8. Python爬虫_糗事百科

    本爬虫任务: 爬虫糗事百科网站(https://www.qiushibaike.com/)--段子版块中所有的[段子].[投票数].[神回复]等内容 步骤: 通过翻页寻找url规律,构造url列表 查 ...

  9. 百度webuploader_c#实现文件分片上传思路

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. 面试必知:String、StringBuilder、StringBuffer的区别

    你知道String.StringBuilder.Stringbuffer的区别吗?当你创建字符串的时候,有考虑过该使用哪个吗? 别急,这篇文章带你解决这些问题. 可变性 首先,String是字符串,我 ...