一、知识了解我是小咸鱼,继续学习django~
1、传统的MVC
MVC代表 Model-View-Controller(模型-视图-控制器)模式
- M 模型层(model),主要用于对数据库层的封装
- V 视图层(view),用于向用户展示结果(WHAT+HOW)
- C 控制层(controller),用于处理请求,获取数据,返回结果(重要)
作用:降低模块间的耦合度(解耦)
2、Django 的MTV模式
MTV代表 Model-Templates-View(模型-模板-视图)模式
- M 模型层(model),负责与数据库交互
- T 模板层(Templates),负责呈现内容到浏览器(HOW)
- V 视图层(view),是核心,负责接收请求,获取数据,返回结果(WHAT)
作用:降低模块间的耦合度(解耦)
1)、在mysite1目录下新建templates目录(和同名文件夹mysite1同级),然后新建test_html.html文件
2)、在setting.py下修改路径
3)、主路由添加路径
4)、视图函数通过loader获取模板,然后HttpResponse响应
在视图函数里面做修改:
在视图函数定义变量,在模板里用{{}}进行调用
:当变量太多且参与运算时,可以不用写成dic形式,直接用 locals() 返回即可。
1、作用:将一些服务器端的功能嵌入到模板中,例如流程控制 2、标签语法: {%标签%} ...... {%结束标签%} 3、举例如下:
1、定义:在变量输出时对变量的值进行处理 2、作用:可以通过使用过滤器来改变变量的输出显示 3、语法:{{变量|过滤器1:'参数值1' | 过滤器2:'参数值2'......}}
1、常用过滤器
2、举例:JS代码起作用
1)、views.py里定义script 为JS代码
2)、test_html.html 文件调用script时不加safe,JS代码被转义
3)、加safe后,JS代码可以正常执行
:引起思考:是不是有可能可以构造XSS攻击,暂时还没想明白,,,
模板继承可以使父模板的内容重用,子模板直接继承父模板的全部内容并可以覆盖父模板中相应的块 语法-父模板中: 1、定义父模板中的block标签 2、标识出哪些在子模块中是允许被修改的 3、block标签:在父模板中定义,可以在子模板中覆盖 语法-子模板中: 1、继承模板 extends 标签(写在模板文件的第一行) {%extends ’base.html‘%} 2、子模板重写父模板中的内容块 {% block block_name %} 子模板块中用来覆盖父模板中 block_name 块的内容 {% endblock block_name %} 重写的覆盖规则: 1、不重写,将按照父模板的效果显示 2、重写,则按照重写效果显示 :模板继承时,服务器端的动态内容无法继承
举例:MUSIC继承HOME
url反向解析是指在视图或模板中,用path定义的名称来动态查找或计算出相应的路由 path函数的语法: 1、path(route,views,name=”别名“) 2、path(’page‘,views.page_view,name=”page_url“) 根据path中的”name=“关键字传参给url确定了个唯一确定的名字,在模板或视图中,可以通过这个名字反向推断出此url信息 模板中——通过url标签实现地址的反向解析 {% url '别名' %} {% url '别名' '参数值1' '参数值2' %} 例如: {% url 'pagen' '400' %} {% url 'person' age='18' name='gxn' %} 在视图函数中——可调用django中的reverse方法进行反向解析 from django.urls import reverse reverse('别名',args=[],kwargs={}) 例如: print(reverse('person',kwargs={'name':'xixi','age':18}))
1、在模板中引用
:这里当test_url_result页面对应的url变了也照样能解析得到,因为这里传入的是别名
2、在视图函数中引用
:这里是做一个302重定向,当点击test_url_result时,重定向到base.html页面,base.html页面通过reverse来重定向
通过{% static %}标签访问静态文件 1、加载static :{% load static %} 2、使用静态资源:{% static ’静态资源路径‘ %} (主要写出文件在static下哪个路径就好) 3、样例:
1、在mysite1文件夹下新建目录static,在setting.py 设置静态文件路径
2、模板文件下加载静态模块,引用图片位置
3、图片加载后,可以看到路径跟一般相对路径一致
1、创建应用
1、用manage.py 中的子命令 startapp 创建应用文件夹 python3 manage.py startapp music 2、在setting.py 的INSTALLED_APPS 列表中配置安装此应用
Django中,主路由配置文件(urls.py)可以不处理用户具体路由,主路由配置文件的可以做请求的分发(分布式请求处理)。具体的请求可以由各自的应用来进行处理
1、主路由中调用include函数
语法:include(’app名字.url模块名‘) 作用:用于将当前路由转到各个应用的路由配置文件的urlpatterns进行分布式处理
2、应用下配置urls.py
应用下手动创建urls.py文件,内容结构同主路由完全一样
3、在views.py 定义函数index_view即可
应用内部可以配置模板目录 1、应用下手动创建templates文件夹 2、settings.py 中开启应用模板功能 TEMPLATE 配置项中的”APP_DIRS“值为 True即可 应用下templates 和外层templates 都存在时,django得查找模板规则 1、优先查找外层templates目录下的模板 2、按INSTALLED_APPS配置下的应用顺序逐层查找 :使用同名文件时,可以在对应的app的templates文件夹下新建与该app同名的文件夹,然后再创建该同名网页,此时views函数需修改 return render(request,'news/test_url_result.html')
1、mysite1主目录下的templates 目录有 test_url_result.html 页面
2、music 目录下的templates下有test_url_result.html 页面
3、访问 http://127.0.0.1/music/index 仍然会显示外层的test_url_result.html 页面
django学习笔记二就记到这里啦,知识点好多,要好好学习呀~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)