第一个页面:Hello World
想要启动项目,首先需要配置sign应用到项目中:在guest/settings.py 的代码添加
实现:Hello World
使用字符串实现目标:路径为index,内容为Hello World
1、首先配置页面:在sign/views页面,配置index路径
2、在guest/urls配置路径:
代码编写完毕后,第一个要做的就是运行项目,让项目跑起来,我们通过运行第一篇笔记的运行命令:
python manage.py runserver
启动,项目后,在浏览器地址也输入:http://127.0.0.1:8000/index/ ,截图如下:
概述
这里实现的逻辑是用户发送请求,django的urls接收并解析请求,将对应的url跟views层关联,接着views层处理请求,返回字符串,并将响应的字符串展示给用户。这是最初级的使用,只是让我们了解django接受到请求的一个流转。在实际的应用中,用户接触到的是精美的页面,这页面指的就是html,也就是接下来要学习的:模块。
模板初了解
模板使用的是html文件,首当其要就是创建html文件
1、在sign目录下创建一个文件templates,并在该目录下创建index.html,注意目录,这里是必须的,django是根据templates去判别的(可能认知不正确,不过先统一实现)
index.html:
<html>
<head>
<title>欢迎界面</title>
</head>
<body>
<h1>Hello World!</h1>
欢迎来到Django的世界!
</body>
</html>
2、修改sign的views.py
from django.shortcuts import render
# 抛弃 HttpResponse 类,转而使用 Django 的 render 函数。该函数的第一个参数是请求对象的,第二个参数返回一个 index.html
def index(request):
return render(request, "index.html")
实现效果如下:
Django工作流的初理解:
结合上述两种方式的hello world,我们可以初步了解到django的一个简单处理流程
用户—> urls.py—>sign/views.py—>index.html—>用户
Django的url
在django的工作流中,第一层就是url层,那么django的url层是什么处理逻辑呢?又是承担什么责任呢?当Django拿到浏览器的URL地址之后,就会取端口号后面的路径“/index”、“/admin”,这个就是我们平常所说的路径,然后在urls.py文件中匹配views层中对应的处理函数。所以url在django中承担的是接受外部请求、解析外部请求和分配对用业务处理逻辑的角色。
在具体实现中,urls.py文件的路径匹配可以使用正在表达式:
url(r'^index/$', views.index),
代码解析:
r:由r开头引起的字符串就是声明了后面的字符串都是原始字符,不会转义
比如写路径:没有 r ,就要写2个 \ \, 有 r ,就正常写\index
^:匹配字符串的开头,匹配第一个开头符合的;在多行模式中匹配每一行的开头。
$:匹配字符串末尾,匹配最后一个末尾符合的;在多行模式中匹配每一行末尾。
Django的views视图
urls接收的请求就会流转到…/sign/views.py,HelloWorld的urls是流转到index函数。视图是非常重要的中转层,在java的相当于controller层,是连接页面与数据的中间纽带。
举例:登录的例子来讲,用户在页面上输入了用户名和密码点击登录。那么 request 请求会由视图来接收,如何提取出用户名和密码的数据,如 何用这些数据去查询数据库,再如何将登录成功的页面返回给用户,这些全部由视图层来完成。
Django的templates模板
模板载体是web页面,Django自带的有模板语言。主要作用是如何展示数据,比如视图层返回的是一个字符串,要如何显示在页面上,返回的对象数组要如何显示等,当然,为了使页面更漂亮需要借助前端技术,比如css、JavaScript等
Django的开发模式:MTV
java有一种mvc开发模式,model是代表数据存取层,view是视图层,controller是指的系统中根据用户输入并决定使用哪个视图的哪部分
Django的对应mvc的含义:
M:数据存取部分,由Django数据层
V:选择显示哪些数据要显示以及怎样显示的部分,由视图和模板处理
C:根据用户输入委派视图的部分,由 Django 框架根据 URLconf 设置,对给定URL调用适当的Python 函数。
Django的MTV模式:
Model代表模型,即数据存取层。该层处理与数据相关的事物:
Template代表模板,也就是表现层,该层处理与表现相关的决定:如何在页面或其他类型文档中进行显示。
View代表视图层:即业务逻辑层。该层包含存取模型及调取恰当模板的相关逻辑。你可以把它看作模型与模板之间的桥梁。
流程:控制器根据浏览器输入url,根据url匹配相对应的view层的视图函数,view视图将业务请求传递到Model层,model层处理数据库,然后将处理后的结果返回给view层,然后view层返回数据给Template模板,并指定页面,最后展示给用户的是一个HTML页面。
总结
我们使用模板的时候,django的执行顺序是:urls–>views–>html
所以我们在编写的时候反过来的,首先先编写好需要的html页面,然后在views.py构建对应的函数,最后在urls.py添加路径和views的函数值
举例: