django 第四天2019-07-31

django 关系型数据库的关系包括三种类型:

ForeginKey: 一对多,将字段定义在多的一端中

ManyToManyField: 多对多,将字段定义在任意一端中。

OneToOneField:一对一,将字段定义在任务一端中

null 针对数据库,blank针对表单

简单的查询

django由一到多的访问语法:

             ‘一’这边的模型类对象.‘多’的模型类的小写_set

django由多到一的访问语法:

            ’多‘的模型类对象.(外键).’多‘的对应模型类的属性名


带条件的多表查询

由多模型类条件查询一模型类数据(通过多来查询一):关系模型类名小写__属性名__条件运算符=值

eg:查询图书,要求图书中的英雄的描述包含“八”

list = BookInfo.object.filter(heroinfo__hcontent__contains='八')

由一模型类条件查询多模型类数据: 语法如下:

一模型类关联属性名__一模型类属性名__条件运算符=值

例:查询书名为“天龙八部”的所有英雄。

list = HeroInfo.objects.filter(hbook__btitle='天龙八部')0

由多查一通过外键来查询,由一查多通过关系模型类名小写__属性名__条件运算符

自关联

为了充分利用数据表的大量数据存储功能,可以设计成一张表,内部的关系字段指向本表的主键,这就是自关联的表结构。

自关联是一种特殊的一对多的关系

使用自连接时要求null和blank允许为空,因为一级数据没有父类

在建立连接关系时aParent=models.ForeignKey('self',null=True blank=True) 这里的self 表示调用的外键就是调用的自己,通过自己与自己建立联系,这就是自连接

主键和外键设计在一张表中

当多查一时,可以用多的parent找到一;当一查多时,可以由一的id所对应的多的parent来调用all(注意在django中,前端all不加(),)就可以查到所有对应的多项。

django前端中all不加()

django中在views文件中HttpResponse 返回的是字符串,render返回的是模板(html)

用户发起请求后的第一件事进入到工程中的setting查找ROOT_URLCONF指定的根目录

url的两种写法 

一种写法是直接在url文件中写

另一种写法是在子应用中创建子url进行调用要使用这种方法时需要在根url也就是在工程中的url 中的urlpatterns[]中写一个url(r'^index/',include('需要包含一个字符串文件名如booktest.urls'))(要用include需要先导入include,可以from django.conf.urls import url,include这种方式调用)

创建一个同include 中同字符串名的文件 在其开头导入

from django.conf.urls import url  

from bookStoreApp import views

然后写urlpatterns = [

        url(r'^index',views.index)

然后就能在网址中输入

127.0.0.1:8002/bookStoreApp/index 

一这种方式来进入页面

地址传参

可以从url地址里面传参数

在url(r'^show_args/(\d+)', views.show_args)中的(\d+)表示在地址栏输完show_args后可以输入数字

然后变为(\d+)在views中show_args函数中添加一个形式参数用于接收页面上输入的数字 然后就能以格式化输出的方式输入到Httpresponse中 返回到页面 这种方式是用位置参数的方式输出

另一种方式是可以变为url(r'^show_args(?P\d+)'views.show_args) 这样在views中的show_arg一个nid的关键字参数,这样是用关键字参数的方式输出 

函数中添加

可以发起get请求

可以发起post请求

你可能感兴趣的:(django 第四天2019-07-31)