django执行流程
- 在浏览器上输入地址url
- django框架会拿到url中的路径部分和urls.py中的urlpatterns中的路由进行匹配,如果匹配成功则会自动执行对应的视图函数。否则返回404
HttpRequest与HttpResponse
- 当访问项目的时候,django框架会将请求的所有的信息封装到HttpRequest对象中,并且将此对象传递的参数传递给视图函数的一个参数,因次我们将第一个形参命名为request。HttpRequest对象中封装了请求的所有信息,例如请求方式,传递的参数。
- 我们在视图函数中进行逻辑判断操作,例如查询数据库。
- 必须要有返回值,返回值类型必须是HttpResponse对象或者其子类对象。
模板语言
- 获得变量值{{ 在render方法中传入的第三个参数一个字典的键名 }}
hero_dict = {'name': 'zs', 'age': 18}
return render(request, 'test2.html', {'t': hero_dict})
在test2.html中
{{ t }}
- 可以调用对象的无参数的并且有返回值的方法
3.变量中点的用法
①如果数据类型是列表通过“点索引”的方法获取元素
②如果数据类型是字典通过“点key”的方式获取元素
③如果数据类型是对象,通过”点属性,点无参数并且有返回值的方法“的方式获取内容
- 注释
单行注释:{# #} 快捷键:ctrl+/
多行注释:{% comment %}{% endcomment %} 快捷键:shift+ctrl+/ - 过滤器 filters
作用:使用过滤器来改变变量内容的显示
语法:{{便令名称|过滤器}}
| 用法 | 效果 |
|---|---|
| {{变量名称|upper}} | 变为大写 |
| {{变量名称|lower}} | 变为小写 |
| {{变量名称|length}} | 求变量的长度 |
| {{变量名称|slice:'0:3'}} | 切片 |
- for循环遍历
{% for 临时变量 in 序列%}
{{ 临时变量 }}<br>
{% endfor %}
①{{ forloop.counter }}:打印循环次数
②{% empty %}:如果序列为空,只运行{% empty %}内的代码
{% for game in game_list %}
<li>{{ game }}</li>
{% empty %}
<h1>我们不玩</h1>
{% endfor %}
- if判断
{% if ms|length > 3 %}
pass
{% else %}
pass
{% endif %}
- 加载图片
①创建 static目录
②在settings.py中设置变量
STATICFILES_DIRS=[os.path.join(BASE_DIR,'static')]
③在html页面中首先加载static {%load static%}
④使用static标签:<img src="{% static '图片路径'}"/>
例如:<img src="{% static '1.png' %}" alt="" width=" "> - 继承:{% extends ‘路径’ %}
①base.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>头部....</h1>
{% block main %}
{% endblock %}
<h1>脚部...</h1>
</body>
</html>
②index.html
{% extends 'base.html' %}
{% block main %}
index...
{% endblock %}
- 引入:{% include ‘路径’ %}
①main.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
index2...
{% include 'footer.html' %}#引入脚
</body>
</html>
②
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>我是脚...</h1>
</body>
</html>