django1.8,django笔记
学习笔记,仅供参考。
目录Django的框架模式MTV模式模板模板的配置是什么创建一个新的项目sittings.py文件添加一个路径编写一个模板加载模板的参数编写第二个模板加载模板并传递参数使用render直接加载模板并传递模板的参数。举个例子。
姜戈的框架模型
MTV模式
MTV模式MTV代表模型-模板-视图模式。这种模式用于应用程序的分层开发。
降低动作模块MTVM的耦合度——模型层负责与数据库交互;t-模板层负责生成HTML并将内容呈现给浏览器;v视图层(View)负责处理业务逻辑,接收请求,获取数据,返回结果;
图示
模板模板
什么是模板?
模板是一个HTML页面,可以根据视图中传递的数据填充相应的页面元素。模板层为呈现给用户的信息提供了设计者友好的语法。
模板的配置
创建新项目。
为了便于演示,我们创建一个新项目mywebsite2:
在项目下创建一个模板文件夹templates(此文件夹用于存储模板文件):
Sittings.py文件
settings.py中有一个模板列表,我们可以在其中设置模板。例如:
后端:指定模板的引擎。
DIRS:指定保存模板的目录。
APP_DIRS:你想在应用程序中搜索模板的版本吗?
选项:关于模板的选项。
我们来看看settings.py
模板=[
{
后端: django . template . backends . django . django templates ,
DIRS: [],
APP_DIRS :对,
选项:{
上下文处理者:[
django . template . context _ processors . debug ,
django . template . context _ processors . request ,
django . contrib . auth . context _ processors . auth ,
django . contrib . messages . context _ processors . messages ,
],
},
},
]
现在,让我们开始配置模板!
添加路径
首先,我们将模板文件夹的路径添加到DIRS:
Dirs: [os.path.join (BASE_DIR, templates)],其中BASE_DIR是全局变量,是当前项目的绝对路径。
编写模板
首先,我们在模板文件夹下创建模板文件page1.html:
!声明文档类型
html lang=en
头
meta charset=UTF-8
标题模板/标题
/头
身体
H1这是我的第一个模板/h1
/body
/html
让我们创建另一个views.py文件:
从django.http导入HttpResponse
def page1_template(请求):
返回HttpResponse(OK!)在urls.py文件中,添加一个路由:
来自django.contrib导入管理
从django.urls导入路径
从django.urls导入re_path
从。导入视图
urlpatterns=[
路径( admin/,admin.site.urls),
re_path(rpage1_template/$ ,views.page1_template),
]这个时候我们还没有加载模板,只是刚刚写了模板文件。
加载模板
第一种加载模板的方式是通过view函数中的loader方法获取模板,然后通过HttpResponse进行响应。
views.py
从django.http导入HttpResponse
#导入加载程序
来自django.template导入加载程序
def page1_template(请求):
#通过加载器加载模板
t=loader . get _ template( page 1 . html )
#将T转换为字符串
html=t.render()
#响应
Return HttpResponse(html)向http://127 . 0 . 0 . 1:8000/page 1 _ template/:
第二种加载模板的方法是使用render直接加载并响应模板。
views.py:
定义测试_页面1 _模板(请求):
从django.shortcuts导入渲染
Render (request, page1.html )注意,这里的Render方法仍然返回HttpResponse对象。
urls.py
urlpatterns=[
路径( admin/,admin.site.urls),
re _ path(r test _ page 1 _ template/$ ,views.test_page1_template),
]发起请求至http://127 . 0 . 0 . 1:8000/test _ page 1 _ template/:
传递模板参数
模板传递参数是指将数据形成字典,将参数传递给模板,由模板渲染填充数据。
写第二个模板。
为了方便之后的学习,我们再写一个模板文件page2.html:
!声明文档类型
html lang=en
头
meta charset=UTF-8
标题模板/标题
/头
身体
氕这是我的第2个模板/h1
氘姓名:{{name}} /h2
氘年龄:{{age}} /h2
!-模板填入数据的格式{{变量名}} -
/body
/html
urls.py
urlpatterns=[
路径( admin/,admin.site.urls),
re _ path(r test _ page 1 _ template/$ ,views.test_page1_template),
re_path(rpage2_template/$ ,views.page2_template)
]
使用装货设备加载模板并传参
views.py
定义第2页_模板(请求):
t=装载机。get _ template(第2页。html’)
html=t.render({name :黄,
年龄:10})
返回HttpResponse(html)注意,渲染方法中只接受字典形式的数据。
向http://127 .0 .0 .1:8000/第2页_模板/发起请求:
使用提出直接加载模板并传参
views.py
定义第2页_模板(请求):
d={ 姓名:白,年龄:11}
返回渲染(请求,‘page2.html’,d)再次向http://127 .0 .0 .1:8000/第2页_模板/发起请求:
模板的变量
在模板中使用变量语法{{变量名}}后端中,必须将变量封装到字典中才允许传递到模板上,其中键必须是字符串,值可以是列表,字典,自定义对象等等:
dic={ 变量1:值1, 变量2:值2}
举个例子
page2.html
!声明文档类型
html lang=en
头
meta charset=UTF-8
标题模板/标题
/头
身体
氕这是我的第2个模板/h1
氘姓名:{{name}} /h2
氘年龄:{{age}} /h2
h3兴趣:{{hobby}} /h3
h3第一个兴趣:{{hobby.0}} /h3
h3朋友:{ {朋友。姓名}} /h3
h3兔子:{{bunny.name}} /h3
h3兔子说:{{bunny.speak}} /h3
/body
/html
urls.py
来自姜戈. contrib导入管理
从django.urls导入路径
从django.urls导入重新路径
从。导入视图
urlpatterns=[
路径( admin/,admin.site.urls),
re_path(rpage2_template/$ ,views.page2_template),
]views.py
班兔:
def __init__(自己,姓名,年龄):
self.name=name
年龄=年龄
定义说话(自我):
string=self.name 今年已经 str(self.age)个月啦
返回字符串
定义第2页_模板(请求):
d={ 姓名:阿达,年龄:22,
爱好:[羽毛球,游戏,看书],
朋友:{ 姓名:王,年龄:23},
小兔子:小兔子(黄,10)}
返回渲染(请求,‘page2.html’,d)
向http://127 .0 .0 .1:8000/第2页_模板/发起请求:
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。