一.项目架构的模式
写程序的终极目标:高内聚 低耦合(high cohesion low coupling)
项目架构模式:MVC架构模式。
Model View Controller
---模型 -----视图 ---控制器
数据------数据显示
在DjangoMTV架构:
Model -- Template(模板--就是页面)----view
模型-----模板------------视图(扮演了一部分控制器的角色)
Model还是模型,Template是模板,就相当于视图。view其实不是视图扮演的是控制器的角色。
Django本身扮演了一部分控制器的角色。
核心理念:把模型和视图进行拆分。数据和数据的显示要分离。
统一组数据可先渲染成不同的形式(数据和显示解耦合)也就是模型和视图要解耦合。
统一模型可以渲染成不同的视图,同一个视图可以加在不同的模型。
控制器:负责把数据和视图连接在一起。(Django中的MTV架构)
二。创建自己的应用。
1.一个django下面可以创建一个或多应用,相当于模块。
2.创建应用-----python mange.py startapp 应用的名字(英文)
3.打开建的这个包下面有许多文件。
4.这个包下面有多个文件:init,admin.py,apps.py,models.py,tests.py,view.py等
**所有的框架都是由 模板 模型 视图组成的。
models ---模型
views------视图(控制器)
在建一个文件夹u来放模板也就是页面:
(1)在项目上点击右键建设一个文件夹templates 这个文件夹就是模板,把页面就放在这个里面。
(2)文件夹建好后:需要在项目中配置建的这个文件夹的路径,否则是找不到这个文件夹的。
如何配置:
(1)找到配置文件settings.py这个文件
(2)再找到TEMPLATES这一项
(3)在该字典的"DIRS"后面的[]写上模板文件夹的绝对路径即可。也可以用os模块写 os.path.join(BASE_DIR,"templates")
静态资源:图片等在项目中创建文件夹然后到
setting里的----------
设置:
STATIC_URL="/STATIC/"
注意你这个地方是什么名字以后写路径的时候开头就是什么名字和你的文件夹叫什么名字是没有任何关系的。
5.综上 M,T,V架构就完成了。
三.view.py视图控制器
1.Django本身扮演了部分控制器的角色,剩下的控制器的功能要依靠view.py来完成。
2.控制器做什么?
(1)接受用户的起请求,验证用户的请求。
(2)操作模型
(3)给用户产生响应(渲染页面)
3.在view中写函数----视图函数。
注意:写的这个函数必须带一个HttpRequest参数---这个参数表示的是用户的请求,所以这个函数必须有一个返回值:
返回----return HttpResponse()这就是给用户一个响应。
这就创建好了一个视图函数,但是我们的配置当请求哪个资源的时候就会调用这个视图函数。
这个时候我们就要配置url:
(1)在项目里----urls.py的这个模块中。
(2)找到urlpatterns这个列表
(3)添加path("资源路径 ",视图函数名字)----作用把资源路径和视图函数映射起来,这个的作用就是当你请求这个资源路径的时候,我就会调用这个视图函数,并将这个视图函数渲染到页面上给用户一个响应。
四.TEMPLATES模板
1.模板中写要展示给用户看的东西
2.导入from django.shortcuts import render
3.在view中写视图函数用render来渲染模板中写好的页面。
def index(request: HttpRequest):
pass
return render(request, "index.html",context)
4.render(请求对象,渲染哪个页面,字典)
四.通过Django的模板页来生成动态的内容。
(1)使用Django的模板语法和模板指令来生成动态的内容。
{% for i in x %}
{% endfor %}
这个就是模板语法和模板指令
。
index:
{% for fruit in fruits %}
<li>{{ fruit}}</li>
{% endfor %}
view.py
def index(request: HttpRequest):
fruits=["苹果","香蕉","草莓","西瓜","火龙果","橘子","山楂","榴莲"]
context={
"fruits":sample(fruits,3),
"greeting":"你好,相信自己改变世界"
}
return render(request, "index.html",context)
网友评论