django目录下的路由系统和视图函数
一、Django路由系统(url)
1、什么是路由系统
路由系统的本质是URL模式以及要为该URL模式调用的视图函数之间的一个映射表即不同的url路径对应的不同的函数,该路由系统是存放在全局配置文件urls.py中,之所以叫路由系统是为了好听
2、路由系统格式:
urlpatterns = [
url(正则表达式, views视图函数,参数,别名),]
urlpatterns = [
url(正则表达式,include(分发的文件路径),]
urlpatterns = [ url(r'^blog/', include('blog.urls')),
]
2、通过路径传递参数
5、客户端向服务器端发送请求的方式:
render()
:主要是做模板渲染用的 redirect(
"路径"
)
:主要是页面跳转用的 直接将函数中所有的变量传给模板
redirect走的是路径,页面跳转路径重新加载
render返回的是模板,只是返回一个页面,路径不会重新加载。
三、Template基础 (模板系统)
{% %}
{{obj|filter:param}} obj为要操作的对象,filter为具体的操作方法,param为要做的值
filter所指代的具体操作方法:
1、add : 给obj
变量加上相应的值,主要用于数字的相加 obj
变量中的引号前加上斜线 obj
首字母大写,主要是对字符串进行设置 obj
字符串中移除指定的字符 比如说是移除obj中的空格 eg:#value4=datetime.datetime.now()
{{ value4|date:'Y-m-d' }} 以年-月-日的方式访问
6、 default : 如果值是False,就替换成设置的默认值,否则就是用本来的值
eg:{{ i|truncatewords:4}}
{% with total=fhjsaldfhjsdfhlasdfhljsdal %} {{ total }}
{% endwith %}
{% verbatim %}
{{ hello }}
{% endverbatim %}
格式:{% block x % } y {% endblock %} 其中x代表盒子的名称,必须与后端替换的盒子名称一样,y代表需要替换的内容
4、在子模板中创建母版内一样的盒子,然后在其里面写入你想要替换的代码就可以了
四、Models数据库
1、 django默认支持sqlite,mysql, oracle,postgresql数据库,但是在测试环境默认选择使用的是sqlite数据库
方式3:一对多查询之正反向查询(通过x_set的方式就可以实现反向查询,x指代的是外键名称)
1、正向查询:
外键表名称.objects.filter(过滤条件).first().外键字段名称.非外键表字段()
2、反向查询:
非外键表名称.objects.filter(过滤条件).last().外键表名__set.外键字段名()
补充:反向查询得到的是个集合对象,而正向查询得到的是个对象。
了不起的双下划线之单表查询
eg:表名.objects.filter(id__lt=10, id__gt=1) 获取id大于1 且 小于10的值
表名.objects.filter(id__in=[11, 22, 33]) 获取id等于11、22、33的数据
表名.objects.exclude(id__in=[11, 22, 33]) 获取id不在列表内的数据,而not in是与之相反
表名.objects.filter(name__contains="x") 获取包含x字段的数据,
表名.objects.filter(name__icontains="ven") 获取不区分大小写的数据
表名.objects.filter(id__range=[x, y]) 获取id在x到y范围内的数据
范围bettwen and 、 startswith、istartswith、endswith、 iendswith,
了不起的双下划线(__)之多表条件关联查询
正向查找(条件)之一对多
格式:外键表名.objects.filter(过滤条件).values("外键名称__非外键字段名")
正向查找(条件)之多对多
格式:外键表名.objects.filter(过滤条件).values("外键名称__非外键字段名")
反向查找(条件)
反向查找之一对多
格式:非外键表名.objects.filter(外键表名__外键字段="外键字段值").values("非外键字段名")
反向查找之多对多:
格式:非外键表名.objects.filter(外键表名__外键字段="外键字段值").values("非外键字段名")
总结: 正向查找是先查表,查到的是个列表对象,然后再再连表,反向查找是先连表,连到的是个列表对象,然后再查表,查表是既可以查自己表中字段也可以查对端表中字段
1、聚合查询 (aggregate),返回的是个字典形式的值
1、首先导入相应模板:from django.db.models import Avg,Min,Sum,Max
2、格式:表名称.objects.[filter(过滤条件)].aggregate([x=]Avg('字段名')) 结果为: {x:值}
注释:x指代的是个得到的结果的key键的名称,如果不填写就自动写字段名作为key名称
3、格式:表名称.objects.filter(过滤条件).aggregate([x=]Avg('字段名1'),([x=]Min('字段名2'),([x=]Max('字段名3'))
注释:如果想求多个值就可以用逗号隔开,得到的结果是个字典形式的集合,过滤条件既可以是正向查找也可以是反向查找,还可以
ge:
2、分组查询( annotate())
注释:x指代的是个得到的结果的key键的名称,如果不填写就自动写字段名作为key名称
3、格式:表名称.objects.[filter(过滤条件)].values(过滤条件).aggregate(([x=]Avg('字段名1'),([x=]Min('字段名2'),)
注释:如果想求多个值就可以用逗号隔开,得到的结果是个字典形式的集合,过滤条件既可以是正向查找也可以是反向查找
ge:
8、F查询和Q查询
1、导入相应的模块:from django.db.models import F,Q
2、F查询主要是更新字段中的数据用:
格式:表名称.object.[filter(过滤条件)].update(表字段名=F("表字段名")+值)
注释:主要是对表字段中的数字进行操作的
eg:
3、Q查询主要是应对多个条件的查询,分别用& | ~ 操作符来作为多个条件之间的链接介质
2、方式2:建表时没有创建外键对应关系,插入记录的时候创建外键对应关系,即写对端对应的对象
1、需要先获取被绑定的对象,也就是说创建的外键需要绑定那个对象
2、然后在需要绑定外键的记录中将类中对应创建外键对象的值改为获取的对象
10、创建外键方法(多对多记录,第三张表绑定关系)
方式1:在建表的时候就已经创建好外键对应关系,因为是第三张表绑定关系,所以可以在任意第一张和第二张表中添加对应关系
通过ManyToManyField(第二张表名称)的方式来创建,
django自己创建的第三张表,三个字段分别为第三张表主键,第一张表主键,第二张表主键
通过add(第一张表记录1,第一张表记录2...)的方式向第三张表中添加字段
注释:首先需要得到第一张表中表多对多的记录对象,然后得到第二张表中多对多的记录对象,最后通过add的方式将两张表多对多记录添加到第三张表中(注意在那个类中添加多对多对象,就用那个表记录对象 添加多对多记录)
也可以通过添加列表的方式添加到第三张表中
方式2:在建表的时候没有创建外键对象,需要自己创建第三张表添加多对多的外键
每个字段中都添加一对多的对应关系,然后就可以django中看见第三张表就可以对其进行具体的操作了。
通过添加具体的id的方式来创建两个字段之间多对多的关系。
11、解除外键方法
1、方式1:正向删除(通过clear()的方式来解除外键关系,以及通过remover(对象)的方式来删除特定外键)
注释:先写出需要删除外键关系的表记录,然后再根据外键绑定对象来删除相应 的对应关系
2、方式2:反向删除()
注释:先写出非外键关系的表记录,然后根据book_set反向查找从而删除相应的对应关系
2 、将static文件夹放到应用下,最好是一个项目对应一个static的文件夹
3 、在setting里面设置引入静态文件的方式
STATIC_ROOT=(os.path.join(BASE_DIR,"appBook/static"), ) 添加上静态文件的路径,django才能找到
4、 在模板首行加上{% load staticfiles %} 相当于读取静态文件配置
5 、 引入文件: {% static 具体路径 %} 相当于引入静态文件
STATIC_URL = '/static/' #引用名
STATICFILES_DIRS = (os.path.join(BASE_DIR,"statics") ) #实际名 ,即实际文件夹的名字
#django对引用名和实际名进行映射,引用时,只能按照引用名来,不能按实际名去找
#<script src="/statics/jquery-3.1.1.js"></script>
#------error----不能直接用,必须用STATIC_URL = '/static/'这个别名引用
#<script src="/static/jquery-3.1.1.js"></script>
注意2:statics文件夹写在不同的app下,静态文件的调用,意思就是说当settings需要引入多个静态文件时,需要在每个静态文件前加入一个元素。
STATIC_URL = '/static/'
STATICFILES_DIRS=(('hello',os.path.join(BASE_DIR,"app01","statics")), )
#<script src="/static/hello/jquery-1.8.2.min.js"></script>
注意3:要想在网页模板中引入静态文件就必须先读取静态文件,然后才能引用,且是通过别名引用。
STATIC_URL = '/static/'
{% load staticfiles %}
# <script src={% static "jquery-1.8.2.min.js" %}></script>
django目录下的路由系统和视图函数的更多相关文章
- Django(二)路由系统、视图、模板
大纲 一.内容概要: 二.上节回顾 三.Django 视图–views 1.获取用户多个数据及文件上传 2.FBV 和 CBV 3.装饰器 四.Django模板补充 - Django模板语言循 ...
- django目录下的各文件
本文部分转载. 使用Python setup.py install命令从源代码安装完Django后,这些都会被拷贝到Python安装目录下的Lib/site-packages/django子目录中.之 ...
- Django 路由系统URL 视图views
一.Django URL (路由系统) URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表:你就是以这种方式告诉Djan ...
- Django框架----路由系统、视图和模板(简单介绍)
一.路由配置系统(urls) URL配置(URLconf)就像Django所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表: 你就是以这种方式告诉Django,对于这个URL ...
- django中路由系统和视图的对应关系(值的传递)-->主要内容(位置参数、关键字参数、额外参数、include分组[urls的分发]、命名分组、反向解析、APPEND_SLASH)
路由系统也就是 urls.py文件,视图就是 views.py文件 路由系统里面要注意的事项 urlpatterns中的元素按照书写顺序从上往下逐一匹配正则表达式,一旦匹配成功则不再继续. 若要从UR ...
- Django路由配置系统,视图函数
一.路由配置系统(URLconf) URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个 ...
- Django路由配置系统、视图函数
一.路由配置系统(URLconf) URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个 ...
- Django框架——基础之路由系统(urls.py)
1.URL路由系统前言 URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应. 在Django项目中编写路由,就是向外暴露我们接收哪些URL的请求,除 ...
- Django框架——基础之路由系统(urls.py)11111111
1.URL路由系统前言 URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应. 在Django项目中编写路由,就是向外暴露我们接收哪些URL的请求,除 ...
随机推荐
- 网页webbrowser
http://www.codeproject.com/Articles/50544/Using-the-WebBrowser-Control-in-ASP-NET/
- gcc支持的标签
#include <stdio.h> #include <time.h> int main(/*int argc, char const *argv[]*/) { void * ...
- redhat5.8系统学习
# redhat5.8系统学习 ### 简介-----------------------------redhat操作系统是红帽公司的收费版操作系统 ### 查看系统版本号-------------- ...
- OC-2-字符串
课程要点: C语言字符串与OC语言字符串的区别 类方法与对象方法的区别 理解NSString(可变字符串)和NSMutableString(不可变字符串)的差异 NSString(不可变字符串) NS ...
- python简单处理xml文件
Python若是想从xml里读点信息,用BeautifulSoup可能会容易一点,但是如果要修改xml,BeatifulSoup就搞不定了,其实直接用lxml就好. from lxml import ...
- CSS隐藏滚动条但又能滚动,不用js实现
隐藏多余的内容,但是可以滑动查看 原理就在于padding-right:17px;把滚动条挤出去隐藏了
- 第一百八十九节,jQueryUI,折叠菜单 UI
jQueryUI,折叠菜单 UI 学习要点: 1.使用 accordion 2.修改 accordion 样式 3.accordion()方法的属性 4.accordion()方法的事件 5.acco ...
- python3----ljust rjust center
Python中打印字符串时可以调用ljust(左对齐),rjust(右对齐),center(中间对齐)来输出整齐美观的字符串,使用起来非常简单,包括使用第二个参数填充(默认为空格).看下面的例子就会明 ...
- Android OpenCV图像转换
1.Mat存储到本地: public void saveMatData(Mat mat) { File fileDir = new File(Environment.getExternalStorag ...
- 如何导入和导出应用数据通过电子邮件应用程序在你的IOS
本文转载至 http://blog.csdn.net/zaitianaoxiang/article/details/6657887 http://yueding920.blog.163.com/bl ...