1.Django中的相应对象
构造函数格式:
HttpResponse(content=响应体,content_type=响应体数据类型,status=状态码)
作用:
向客户端浏览器返回相应,同时携带响应体内容。
参数:
--content:表示返回的内容。
--status_code:返回的HTTP响应状态码(默认为200)。
--content_type:指定返回数据的MIME类型(默认为“text/html”)。浏览器会根据这个属性,来显示数据。如果是text/html,那么就会解析这个字符串,如果是text/plain,那么就会显示一个纯文本。
响应头中常见的Content-Type:
-- text/html :默认的,html文件
--text/plain:纯文本
--text/css:css文件
--text/java script:js文件
--multipart/form-data:文件提交
--application/json:json传输
--application/xml:xml文件
2.GET处理
request.GET['参数名'] ##QueryDict
request.GET.get('参数名','默认值')
request.GET.getlist('参数名')
3.模板
(1)模板是可以根据字典数据动态变化的html网页。
(2)模板可以根据视图中传递的字典数据动态生成相应的HTML网页。
(3)创建模板文件夹,一般位于<项目名>/templates
(4)在settings.py中,TEMPLATES的配置项:
"BACKEND":指定模板的引擎。
"DIRS":模板的搜索目录(可以是一个或者多个)
"APP_DIRS":是否要在应用中的templates文件夹中搜索模板文件。
OPTIONS":有关模板的选项。
4.模板的加载
方案1
通过loader获取模板,通过HttpResponse进行响应。注意是在视图函数中实现。
例如
from django.template import loader #1 通过loader加载模板 t = loader.get_template("模板文件名") #2 将t转换成HTML字符串 html = t.render(字典数据) #3 用响应对象将转化的字符串内容返回给浏览器 return HttpResponse(html)
方案2,也是常用的方法
使用render(()直接加载并相应模板。注意是在视图函数中实现。
from django.shortcuts import render, get_object_or_404 return render(request, "模板文件名", 字典数据)
5.视图层与模板层之间的交互
(1).视图函数中,可以将Python变量封装到字典中,然后传递大模板。
例如
context = { "active_user": active_user, "group_list": group_list, "enable_backup_switch": config.get("enable_backup_switch"), } return render(request, "XXXX.html", context)
(2).模板中,我们可以用{{ 变量名 }}的语法,调用视图传进来的变量。
6.模板的变量
(1)能传递到模板中的数据类型
str --字符串 int ---整型
list --数组 tuple --元组
dict--字典 func--方法
obj --类实例化的对象
(2)在模板中使用变量语法
--{{ 变量名 }}
--{{ 变量名.index }} ---例如传递过来的变量是list
--{{ 变量名.key }} ---例如传递过来的变量是字典
--{{ 对象.方法 }}
--{{ 函数名 }}
7.模板过滤器
定义:在变量输出时对变量的值进行处理
作用:可以通过使用 过滤器 来改变变量的输出显示
语法:
{{ 变量名 | 过滤器1:可选参数1 | 过滤器2:可选参数2 ... }}
8.模板的继承
模板继承可以使父模板的内容重用,子模版直接继承父模板的全部内容并可以覆盖父模板中相应的块。
语法--父模板中:
(1)定义父模板中的块block标签;
(2)标识出哪些在子模块中是允许被修改的;
(3)block标签:在父模板中定义,可以在子模版中覆盖,
语法--子模版中:
(1)继承模板extends 标签(写在模板文件的第一行)
例如 {% extends "base.html" %}
(2)子模版 重写父模板中的内容块
{% block block_name %}
子模版块用来覆盖父模板块中 block_name 块的内容
{% endblock block_name %}
9.代码中URL出现的位置
(1)模板【html】中的url
A.<a href='url'>超链接</a>
点击后,页面跳转至url
B.<from action = 'url' method = 'post'>
from 表单中的数据,用post方法提交至url
(2)视图函数中--302跳转,HttpResponseRedirect('url')
将用户地址栏中的地址跳转到url。
10.url反向解析
url反向解析是指在视图或模板中,用path定义的名称来动态查找或者计算出相应的路由。
path函数的语法
path(route,views,name="别名")
例如:
path('page',views.page_vies,name="page_url")
根据path中的'name='关键字传参给url确定了个唯一确定的名字,在模板
或视图中,可以通过这个名字反向推断出此url信息。
模板中使用,通过url标签实现地址的方向解析:
{% url '别名'%}
{% url '别名' '参数值1' '参数值2' %}
在视图函数中使用,可调用django中的reverse方法进行反向解析。
from django.urls import reverse
reverse('别名',args=[],kwargs={})
11.静态文件配置
* 静态文件配置位于settings.py中。
配置静态文件的访问路径【配置默认存在】
# Static files (CSS, java script, Images) STATIC_URL = "/static/" STATIC_ROOT = os.path.join(BASE_DIR, "static") STATICFILES_DIRS = [ os.path.join(BASE_DIR, "common/sta