django获取单表数据的三种方式

v1 = models.Business.objects.all()
# v1是QuerySet的列表 ,内部元素都是对象

v2 = models.Business.objects.all().values('id','caption')  //这里不加all()也可以
# v2是QuerySet的列表 ,内部元素都是字典

v3 = models.Business.objects.all().values_list('id','caption')  //这里不加all()也可以
# v3是QuerySet的列表 ,内部元素都是元组

def business(request):

    v1 = models.Business.objects.all()

    v2 = models.Business.objects.all().values('id','caption')

    v3 = models.Business.objects.all().values_list('id','caption')

    print(v1,v2,v3)
return render(request, 'business.html', {'v1': v1, 'v2': v2, 'v3': v3})

business.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h1>业务线列表(对象)</h1>
<ul>
{% for row in v1 %}
<li>{{ row.id }} - {{ row.caption }} - {{ row.code }}</li>
{% endfor %}
</ul>
<h1>业务线列表(字典)</h1>
<ul>
{% for row in v2 %}
<li>{{ row.id }} - {{ row.caption }}</li>
{% endfor %}
</ul>
<h1>业务线列表(元组)</h1>
<ul>
{% for row in v3 %}
<li>{{ row.0 }} - {{ row.1 }}</li>
{% endfor %}
</ul>
</body>
</html>

获取一个对象

方法一:如果存在就返回一个对象,如果不存在就报错,不推荐
models.Business.objects.get(id=1)
方法二:如果存在就返回一个对象,不存在就返回none,推荐
models.Business.objects.filter(id=1).first()

外键:

class Business(models.Model):

    caption = models.CharField(max_length=32)
code = models.CharField(max_length=32,null=True,default='SA') class Host(models.Model):
id = models.AutoField(primary_key=True)
hostname = models.CharField(max_length=32)
ip = models.GenericIPAddressField(protocol='ipv4')
port = models.IntegerField()
b = models.ForeignKey(to='Business',to_field='id')

v = models.Host.objects.filter(nid__gt=0)
v[0].b.caption ----> 通过点(.)进行跨表

实例:跨表查询的三种方式

def host(request):

    host_obj = models.Host.objects.all()
host_obj2 = models.Host.objects.filter(b__caption='运维').values('id','hostname','ip','port','b__code')
for i in host_obj2:
print(i['id'],i['hostname'],i['ip'],i['port'],i['b__code']) host_obj3 = models.Host.objects.filter(b__caption='运维').values_list('id', 'hostname', 'ip', 'port', 'b__code') return render(request,'host.html',{'host_obj':host_obj,'host_obj2':host_obj2,'host_obj3':host_obj3})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h2>对象</h2>
<table border="1px">
<thead>
<tr>
<th>ID</th>
<th>主机名</th>
<th>ip</th>
<th>port</th>
<th>业务线</th>
<th>业务线编码</th>
</tr>
</thead>
<tbody>
{% for i in host_obj %}
<tr hid="{{ i.id }}" bid="{{ i.b_id }}">
<td>{{ forloop.counter }}</td>
<td>{{ i.hostname }}</td>
<td>{{ i.ip }}</td>
<td>{{ i.port }}</td>
<td>{{ i.b.caption }}</td>
<td>{{ i.b.code }}</td>
</tr>
{% endfor %} </tbody>
</table>
<h2>字典</h2>
<table border="1px">
<thead>
<tr>
<th>ID</th>
<th>主机名</th>
<th>ip</th>
<th>port</th>
<th>业务线编码</th>
</tr>
</thead>
<tbody> {% for i in host_obj2 %}
<tr hid="{{ i.id }}" bid="{{ i.b_id }}">
<td>{{ forloop.counter }}</td>
<td>{{ i.hostname }}</td>
<td>{{ i.ip }}</td>
<td>{{ i.port }}</td> <td>{{ i.b__code }}</td>
</tr>
{% endfor %} </tbody>
</table>
<h2>元组</h2>
<table border="1px">
<thead>
<tr>
<th>ID</th>
<th>主机名</th>
<th>ip</th>
<th>port</th>
<th>业务线编码</th>
</tr>
</thead>
<tbody> {% for i in host_obj3 %}
<tr hid="{{ i.0 }}" bid="{{ i.b_id }}">
<td>{{ forloop.counter }}</td>
<td>{{ i.1 }}</td>
<td>{{ i.2 }}</td>
<td>{{ i.3 }}</td>
<td>{{ i.4 }}</td>
</tr>
{% endfor %} </tbody>
</table> </body>
</html>

django获取表单数据的更多相关文章

  1. Servlet的5种方式实现表单提交(注册小功能),后台获取表单数据

    用servlet实现一个注册的小功能 ,后台获取数据. 注册页面: 注册页面代码 : <!DOCTYPE html> <html> <head> <meta ...

  2. ASP.NET MVC 获取表单数据

    public class Person { public string Name{get;set;} public string Phone{get;set;} } view层 @model Mode ...

  3. 1.3(学习笔记)Servlet获取表单数据

    一.Servlet获取表单数据 表单提交数据经由Servlet处理,返回一个处理结果显示在页面上, 那么如何获取表单提交的参数进出相应的处理呢? 主要用到以下方法: String  getParame ...

  4. JSP简单练习-获取表单数据

    在JSP中,server端程序与client交互最经常使用的方法就是採用表单提交数据.表单提交的方法主要有两种,一种是get方法.还有一种是post方法.两者最大的差别:使用get方法提交的数据会显示 ...

  5. php学习笔记-获取表单数据

    在网页上经常要填写用户名和密码,点击确认按纽之后,用户名和密码经过前端处理之后发送到了服务器上,那么服务器端怎么获取到这些用户提交的数据呢?就是通过超级全局变量 _POST和_GET 先拿_POST做 ...

  6. Servlet 响应 响应相关与重定向 请求 获取表单数据2种方法

    一.HttpServletResponse  (响应) 包括下面三个: 1.响应消息行  HTTP/1.1  200 OK 200是HTTP状态码, 代表请求已成功. (查httpservletres ...

  7. JS--轻松设置获取表单数据

    接触过Angularjs的都知道,ng支持双向绑定,我们可以轻轻松松的通过ngModel将我们的值绑定到界面,当修改了值提交表单的时候不需要再重新通过ID去重新抓取输入框信息了.那对于我们开发前台网站 ...

  8. FromData获取表单数据

    一般想要不刷新页面提交数据时,可以使用ajax提交.如果数据量不大可以自己写json数据用ajax提交到后台服务,但是数据量多且需要动态添加数据时,自己写json格式数据就有点麻烦了,这时候就需要Fo ...

  9. 用Servlet获取表单数据

    用Servlet获取表单数据 在webroot下新建userRegist2.jsp 代码如下: <%@ page contentType="text/html;charset=gb23 ...

随机推荐

  1. 2017java文本文件操作(读写操作)

    java的读写操作是学java开发的必经之路,下面就来总结下java的读写操作. 从上图可以开出,java的读写操作(输入输出)可以用“流”这个概念来表示,总体而言,java的读写操作又分为两种:字符 ...

  2. AE2

    2.3缩放属性 ctrl+D 复制图层:这样可以吧这个图层的所有属性都复制过去 然后按着alt键,把图片替换掉 需要做一个倒计时(作业)(到1时做一个烟花效果) 问题:1.按着alt键,把图片替换掉. ...

  3. 安装Nmon方法

    1. 登录IBM官方网站(http://nmon.sourceforge.net/pmwiki.php?n=Site.Download)下载相应版本的nmon工具:nmon_linux_14g.tar ...

  4. Ideal部署web工程

  5. C++学习(十八)(C语言部分)之 指针2

    指针1.指针的概述 指针是什么? 指针是一个地址 是一个常量 int 整型 int a a是变量 指针用来做什么? 方便使用数组或者字符串 像汇编语言一样处理内存地址2.指针变量 什么是指针变量? 是 ...

  6. Centos6.8 搭建Tomcat服务器

    Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,是一个可以提供web服务同时也支持Servlet的JSP服务器. ...

  7. Thinkphp,Jquery,Ajax异步发布

    1.在提交表单的HTML页面的<head>中定义一个变量供Jquery使用 <script type='text/javascript'>var handleUrl='< ...

  8. 【BZOJ1823】【JSOI2010】满汉全席

    差点忘了2-sat…… 原题: 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只有极少數博学多闻技艺高超的厨师能够做出满汉 ...

  9. eclipse操作(备忘)

    myecplise破解   https://blog.csdn.net/by_xiaobai007/article/details/81177367 1.查看类路径 2.建立模板 window--pr ...

  10. nginx ssi + ngx_pagespeed 实现micro frontends 开发

    nginx 的ssi 功能让我们可以将不同的拼接起来,ngx_pagespeed 是pagespeed 的nginx 模块,可以帮助 我们解决前端的一些性能优化的问题,通过简单的配置就可以搞定 一张参 ...