django知识点小结
Posted zhouhai007
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django知识点小结相关的知识,希望对你有一定的参考价值。
web应用
什么是web应用:
网站:BS架构的应用程序:B是浏览器 S:server(实现了wsgi协议)+application(我们都在写这个)
其实就是cs
MVC和MTV(Django)
-M:Model跟数据库打交道
-V:模板
-C:控制器
MTV:(MTV也是MVC架构)
M:models跟数据库打交道
T:Templates模板层,对到MVC是V这一层
V:视图,Views,路由+V是MVC的C
HTTP协议
略
web框架
application拆分
a:server b:映射关系 c:模板渲染
Flask:
Django
Tornado
第二篇:Djangon简介
略
第三篇:路由控制
一 Django中路由的作用
请求的路径跟视图函数的映射关系
二 简单的路由配置
四个参数:第一个正则表达式,第二个函数内存地址,第三个默认值,第四个是别名
三 分组
无名:(正则表达式) 值分出来当位置参数传到视图函数
有名:(?P<名字>正则表达式) 值分出来当关键字参数传到视图函数
四 路由分发
url(r‘^app01/‘, include(‘app01.urls‘)),
五 反向解析
就是根据别名,取到对应的url地址
-视图层:reverse(‘别名‘args=())
-模板层:{% url ‘别名‘ 参数 参数%}
六 名称空间
-include(‘app01.urls‘,namespance=‘app01‘)
-以后再反向解析:reverse(‘app01:别名‘args=())
七 django2.0版的path
-path:路径是准确路径,不是正则表达式了
-内置了5个转换器
-自定义转换器
第四篇:视图层
1 视图函数
2 HttpRequest对象
-GET
-POST
-FILES
-path
-method
-get_full_path()
-body
3 HttpResponse对象
-三件套
4 JsonResponse
-HttpResponse+json
5 CBV和FBV
-基于类的视图:
-url配置 类名.as_view()
-views.py
class Test(View)
dispatch:总的分发方法
def get(self,request)
rentun HttpRequest对象
6 简单文件上传
-前端页面:form-data
-视图层:FILES(字典)根据key值取出来,拿到文件对象
问题:
-Post请求,是否可以在请求路径中加参数?可以,从GET中取,body的内容,从POST中取
-反向解析传参
举例:在模板层反向解析出要删除的图书路径
-url(r‘^dlbook/(?P<pk>d+)‘, views.deletebook,name=‘deletebook‘),
-<td><a href="{% url ‘deletebook‘ book.pk%}">删除</a></td>
第五篇:模版层
一 模版简介
模板语言
二 模版语法之变量
-基本用法:{{ 变量 }}
-深度查询 .
-{{ 对象.方法 }} 方法不能传参数
-字典,列表 用 .
三 模版之过滤器
-date
-default
-slice
...
四 模版之标签
{%for %}
{%for a in 可迭代对象 %}
{{a.name}}
{{forloop}}
{%endfor%}
{% if 条件%}
{%elif 条件%}
{%else%}
{%endif%}
{% with %}:取别名
五 自定义标签和过滤器
1 确认app是否已经注册
2 在app下创建一个包:templatetags
3 在包中写mytag.py
4 from django.template import Library
5 register=Library()
6 标签:
@register.simple_tag(别名)
def mytesttag(a,b,c)
return a+b+c
过滤器
@register.filter(别名)
def mytestfilter(a,b)
return a+b
7 使用标签
{% load mytag%}
标签
{% mytesttag 参数1 参数2 参数3%}
过滤器
{{ 第一个参数|mytestfilter:‘第二个参数‘}}
六 模版导入入和继承
-导入 {% include ‘模板的名字‘%}
-继承
-先写一个母版,在母版中定义盒子
{% block content %}
{% endblock %}
-使用:
在其他模板中:
{% extends ‘base.html‘ %}
{% block content %}
写变化的内容
{% endblock %}
-{{block.super}} 会把原来母版中的内容拿过来
七 静态文件相关
-三种方式
-写死
-static
-get_static_prefix
第六篇:模型层:单表操作,多表操作
-单表:基本查询,双下划线的模糊查询
-多表:
基于对象的跨表
基于双下划线的多表
-
聚合查询
-聚合函数使用
F,Q查询
F可以去除字段的值,
Q查询:构造出与或非得关系
分组查询:
‘‘‘
group by谁就以谁做基表
filter在前表示where
filter在后表示having
values在前表示group by 的字段
values在后表示取值
‘‘‘
#查询每个出版社的名称和书籍个数
多表的小结:
1 queryset对象有update,delete,create
2 表模型对象,有save,delete
3 手动创建第三张表(ManyToMany关联)
以上是关于django知识点小结的主要内容,如果未能解决你的问题,请参考以下文章