1.一个基本的Django请求流程

我们先开始写一个基本的请求。这个请求的获取和处理,是使用 urls.py 和 views.py 处理的。我们使用命令 python manage.py runserver 0.0.0.0:8000 启动服务器,这个操作会去读取项目目录下的 settings.py 文件,里面是这个项目的所有配置信息,里面有一项配置 ROOT_URLCONF , 这个配置的是项目请求路径和处理view的映射器。

从上我们可以看到,配置位置是 ProjectManagement.urls ,即代表项目下的urls.py 为路径和view的映射器。下面来看一下项目下的 urls.py 文件,如下所示。

可以看到我们这个py文件定义了一个叫做 urlpatterns 的list,里面陈列了项目中所有的请求路径和处理view的映射url(), 第一部分是正则表达式,正则匹配我们输入的链接地址,第二部分是处理该链接发来的请求的view。其中我们自定义了一个url,是 url(r’^now/’, views.current_datetime()), 这个正则表达式代表所有输入路径以now/开头的请求都会交给 views.current_datetime 处理。其中views.current_datatime 是我们在views.py 中定义一个请求处理函数,代码如下。

这个处理函数的特点是参数为request,用来接收我们发来的请求数据,我们在这个函数中构造了一个包含当前时间的html代码,然后使用HttpResponse函数分装返回给前台页面,最后我们启动服务,在页面上输入localhost:8000/now 就看到了如下信息。

看到了我们构造的信息。这样一个基本的请求处理流程就完成了。

从上面的urls.py中,我们可以看出,django是松耦合。路径和视图的映射与视图的实现都是分开的,也就是说,我们修改了视图,不影响映射关系,修改映射关系,不影响视图。

对于常见的Restful URL,我们应该怎么处理?

一般使用如下方法

2. django的模板系统

通过我们上面在python代码中拼接html代码,是不是有点很不方便。django有模板系统,方便我们分离前后台,实现数据和页面的分离。模板系统主要包括定义模板,定义上下文,匹配模板和上下文。其中我们的模板即可是文件中的html代码,也可以是我们定义的html代码字符串。

  • 定义模板

使用django.template.Template定义模板

  • 定义上下文

使用django.template.Context定义上下文

  • 模板渲染

使用template.render(context)渲染模板

代码如下:

这个只是实现了我们的html代码和业务数据的分离,并没解决html代码硬编码的问题。一般来说,html代码一般写在html文件里。所以,继续学习其他配置模板的方式。我们知道在项目中的settings.py是项目配置文件,它也是一个python文件,里面定义了一个变量 TEMPLATES ,这个变量就是用来配置我们在项目中定义的模板文件的目录。我们在项目中创建一个template文件夹,同时修改settings.py 的配置。

接下来,我们在模板文件夹下创建一个模板html,然后使用django.templates.get_template加载该模板文件,get_template可以使用子目录,这个子目录相对于我们在settings.py中定义的模板目录。代码如下。

这样就避免了模板文件html的硬编码。学过jdbc的人都知道,这种代码的格式是一样的,属于样式模板文件,每次都这样写,效率不高,所以引入了一条龙服务的django.shortcuts.render_to_response,无需显式创建模板和上下文以及使用HttpResponse,代码如下。

模板系统中的模板标签:(做过java web都对这个肯定很熟悉,模板标签和el表达式类似)

1. {% if name%}{% endif%} {% else%}: 一定要有结束标签,并且有多个条件时,不支持括号

2.{% for i in list %} {% endfor%}: 一定要有结束标签,不支持break和continue

3.{% ifequal a b%}{% ifequal a b%} {% ifnotequal a b%}{% ifequal a b%} : 判断a和b是否相等

4.{# #} : 注释

5. {{ name | lower }} : 过滤器

一般来说模板中不能改变python变量的值,同时也不能调用python代码。

Django 的工作流程和基本内容的更多相关文章

  1. Django 工作流程

    一.Django 工作流程 在开始具体的代码之旅前,先来宏观地看下Django是如何处理Http Resquest的,如下图: 假设你已经在浏览器输入了 http://127.0.0.1:8000/p ...

  2. day18 js 正则,UI框架,Django helloworld 以及完整工作流程

    JS正则:    text     判断字符串是否符合规定的正则表达式    exec    获取匹配的数据   默认情况下: 只要能匹配到就返回true 否则返回false 只匹配数字:   所以J ...

  3. django入门 -- 简单流程

    django入门 -- 简单流程 简介 通过简单示例,使用django完成基本流程的开发,学习django的主要的知识点,在后续课程中会逐个知识点进行深入讲解 以“图书-英雄”管理为示例 主要知识点介 ...

  4. Storm 中什么是-acker,acker工作流程介绍

    概述 我们知道storm一个很重要的特性是它能够保证你发出的每条消息都会被完整处理, 完整处理的意思是指: 一个tuple被完全处理的意思是: 这个tuple以及由这个tuple所导致的所有的tupl ...

  5. gitlab工作流程简介

    gitlab工作流程简介 新建项目流程 创建/导入项目 可以选择导入github.bitbucket项目,也可以新建空白项目,还可以从SVN导入项目 建议选择private等级 初始化项目 1.本地克 ...

  6. RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件介绍

    RDIFramework.NET ━ .NET快速信息化系统开发框架 工作流程组件介绍 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部 ...

  7. NSURLSession使用说明及后台工作流程分析

    原文摘自http://www.cocoachina.com/industry/20131106/7304.html NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConne ...

  8. 了解SpringMVC框架及基本工作流程

    传统原生的JSP+Servlet在开发上过程上虽然简单明了,JSP页面传递数据到Servlet,Servlet整理数据(逻辑开发)或者从数据库提取数据接着再转发到JSP页面上,但是其似乎只能止步于此, ...

  9. git工作流程

    git工作流程 一般工作流程如下: 克隆 Git 资源作为工作目录. 在克隆的资源上添加或修改文件. 如果其他人修改了,你可以更新资源. 在提交前查看修改. 提交修改. 在修改完成后,如果发现错误,可 ...

随机推荐

  1. JavaScript ES6中export、import与export default的用法和区别

    前言 相信很多人都使用过export.export default.import,然而它们到底有什么区别呢? 在看他们之间的区别之前,我们先来看看它们的用法. ES6 import和export的用法 ...

  2. HDU-1269 迷宫城堡(连通分量)

    迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  3. Springboot(java)程序部署到k8s

    新建rc(replication controller) 以下操作在master1做 rc是一套程序部署的配置,k8s会根据配置自动运行和管理程序,例如自动启动程序,程序挂了自动重启等等 rc配置一般 ...

  4. 如何在CentOS 7上安装Node.js和npm

    Node.js是一个跨平台的JavaScript运行时环境,允许在服务器端执行JavaScript代码.Node.js主要用于后端,但也作为全栈和前端解决方案而流行. npm,Node软件包管理器的缩 ...

  5. xps9560黑苹果展示

    花费了一些时间来安装黑苹果 - - .,  展示一波 更换了DW1820a无线网卡,花费70+ 手上这台笔记本,在安装黑苹果的时候基本没遇见太大的问题,一路顺风顺水. 桌面,程序坞调小放在左侧   极 ...

  6. vue中对于图片是否正常加载的思考

    问题:由于业务需要,我们需要判断图片能否正常的加载,如果未正常加载的话,需要显示一张默认图片: 方案:1,由于后台返回的是一个图片id数组,例如 imgList=['343313131','21333 ...

  7. Apache Mesos 官方文档 V1.0

    Apache Mesos 官方文档 V1.0 2016-11-07 中文版:http://mesos.mydoc.io/ gitBook :https://www.gitbook.com/book/m ...

  8. bzoj1964: hull 三维凸包

    传送门 二维平面四个点求凸包面积->任选三个点面积之和/2 三维平面五个点求凸包体积->任选四个点体积之和/2 二维平面三个点面积->二个二维向量行列式值的绝对值/2 三维平面四个点 ...

  9. Factors and Multiples

    Factors and Multiples   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Y ...

  10. BUUCTF | [CISCN2019 华北赛区 Day1 Web2]ikun

    步骤: 找到lv6的购买出,修改折扣买lv6 :然后找到admin的登陆界面,JWT破解,登陆admin :点击一键成为大会员,利用python反序列化漏洞读取flag 解析: 这题师傅们的WP已经很 ...