from __future__ import unicode_literals
from django.db import models
from django.contrib.auth.models import User # Create your models here. class Host(models.Model):
hostname=models.CharField(max_length=)
ip=models.GenericIPAddressField(unique=True)
port=models.IntegerField(default=)
system_type_choices=(
('linux','LINUX'),
('Win64','WIN64'),
)
system_type=models.CharField(choices=system_type_choices,max_length=)
enable = models.BooleanField(default=True)
create_date = models.DateTimeField()
online_date = models.DateTimeField(auto_now_add=True)
groups=models.ManyToManyField('HostGroup')
idc = models.ForeignKey('IDC' ) def __unicode__(self):
return self.hostname class IDC(models.Model):
name = models.CharField(max_length=,unique=True)
def __unicode__(self):
return self.name class HostGroup(models.Model):
name = models.CharField(max_length=,unique=True)
def __unicode__(self):
return self.name class UserProfile(models.Model):
user = models.OneToOneField(User)
name = models.CharField(max_length=,unique=True)
host_groups = models.ManyToManyField('HostGroup',blank=True,null=True)
hosts= models.ManyToManyField('Host',blank=True,null=True) 模糊查询,contains是包含
models.Host.objects.filter(system_type='LINUX',hostname__contains='o')
结果是一个列表 [<Host: localhost>, <Host: ubuntu>, <Host: jindie>] 精确查询,如果有出现多个,结果将报错
models.Host.objects.get(system_type='LINUX',hostname__contains='o') id大于1的查询
models.Host.objects.filter(id__gt=) id in 列表查询
models.Host.objects.filter(id__in=[,,,,]) 创建第一种方法:models.Host.objects.create
import datetime
datetime.datetime.now()

(1) 写入数据库除了多对对
models.Host.objects.create(
hostname = 'OA',
ip = '1.1.1.5',
port = ,
system_type = 'WIN64',
idc_id =, #或者 idc = models.IDC.objects.get(name='万达机房')
create_date = datetime.datetime.now(),
online_date = datetime.datetime.now(),
)
(2) 查询刚插入的数据信息(实例)
h = models.Host.objects.get(hostname='OA')
(3) 查询多对多表的所有数据(实例)
all_groups = models.HostGroup.objects.all()
(4)把groups表的数据插入到Host表
h.groups.add(*[i.id for i in all_groups])
#删除  h.groups.remove(*[i.id for i in  all_groups])
#可以传入字典 h.groups.add(**{'a':1,'b':2})

####################################################
创建的第二种方法,不查找,直接添加,models.Host (1)
h = models.Host(
hostname = 'OA',
ip = '1.1.1.5',
port = ,
system_type = 'WIN64',
idc_id =,
create_date = datetime.datetime.now(),
)
(2)
h.save()

(3)
all_groups = models.HostGroup.objects.all()

(4)
h.groups.add(*[i.id for i in all_groups]) ##############################################
update
h.hostname = 'feng'
h.save models.Host.objects.filter().update(port=) ##############################################
delete
models.Host.objects.filter(hostname='OA').delete() ################################################# 跨表查询,从用户表查询
a = models.UserProfile.objects.last()
a.host_groups.select_related()
a.hosts_select_related() #################################### 判断用户是否登陆成功后,返回{{request.user}}
{% if request.user.is_authenticated %}
{{request.user}}
{%else%}
<a href="/login">退出</a> html编写 <div>
{{ request.user.userprofile.hosts.select_related }}
<ul>
{% for group in request.user.userprofile.host_groups.select_related %}
<li>{{ group.name }}</li>
<ul>
{% for host in group.host_set.select_related %}
<li>{{ host.hostname }}----->{{ host.ip }}---{{ host.idc.name }}</li>
{% endfor %}
</ul>
{% endfor %}
</ul> ############################### views #!/usr/bin/env python
#_*_ coding:utf- _*_
from django.shortcuts import render,redirect,HttpResponse,HttpResponseRedirect
from django.template.context import RequestContext
from django.contrib.auth import authenticate,login,logout
from django.contrib.auth.decorators import login_required #装饰器,不登陆,不能访问其他页面
import models @login_required()
def host(request):
return render(request,'host.html') def acc_login(request):
ret = {'status':""}
if request.method == 'POST':
print request.POST
username = request.POST.get('username',None)
password= request.POST.get('password',None)
user = authenticate(username=username,password=password)#验证用户名,密码
if user is not None:
login(request,user) #如果不做这个动作,后台login还是没有登陆的,其他页面不能访问,其实就是差一个session
return HttpResponseRedirect('/')
else:
ret['status']='用户名或者密码错误'
return render(request, 'login.html', ret)
else:
return render(request,'login.html')
@login_required()
def index(request):
return render(request,'index.html') @login_required()
def asset(request):
return render(request,'asset.html') @login_required()
def acc_logout(request):
logout(request)
return HttpResponseRedirect('login.html')

django book querysets的更多相关文章

  1. 有效使用Django的QuerySets

    对象关系映射 (ORM) 使得与SQL数据库交互更为简单,不过也被认为效率不高,比原始的SQL要慢. 要有效的使用ORM,意味着需要多少要明白它是如何查询数据库的.本文我将重点介绍如何有效使用 Dja ...

  2. Django——QuerySets酷毙了!

    Django的QuerySets酷毙了! 在本文中我将解释一下QuerySets是什么,它是如何工作的(如果你对它已经熟悉了,你可以直接跳到第二部分),我认为如果可以的话你应该总是返回QuerySet ...

  3. django性能优化

    1. 内存.内存,还是加内存 2. 使用单独的静态文件服务器 3. 关闭KeepAlive(如果服务器不提供静态文件服务,如:大文件下载) 4. 使用memcached 5. 使用select_rel ...

  4. Django 数据库查询优化

    Django数据层提供各种途径优化数据的访问,一个项目大量优化工作一般是放在后期来做,早期的优化是“万恶之源”,这是前人总结的经验,不无道理.如果事先理解Django的优化技巧,开发过程中稍稍留意,后 ...

  5. Django的性能优化

    Django的性能优化   一,利用标准数据库优化技术 传统数据库优化技术博大精深,不同的数据库有不同的优化技巧,但重心还是有规则的.在这里算是题外话,挑两点通用的说说: 索引,给关键的字段添加索引, ...

  6. Django : Security in Django

    Security in Django https://docs.djangoproject.com/en/1.10/topics/security/ 1 Cross site scripting (X ...

  7. Django中不返回QuerySets的API -- Django从入门到精通系列教程

    该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453 ...

  8. django不返回QuerySets的API

    以下的方法不会返回QuerySets,但是作用非常强大,尤其是粗体显示的方法,需要背下来. 方法名 解释 get() 获取单个对象 create() 创建对象,无需save() get_or_crea ...

  9. Paginator Django 分页 When QuerySets are evaluated QuerySets 执行原理 QuerySets are lazy 惰性执行 访问db取数据的时机

    https://docs.djangoproject.com/en/2.2/topics/pagination/ Paginator objects¶ The Paginator class has ...

随机推荐

  1. Nginx+Lua 积累

    1.解析16进制编码的中文参数 local encodeStr = "%E6%B0%94" local decodeStr = ""; , #encodeStr ...

  2. jQueryUI日期显示

    <script type="text/javascript" src="js/My97DatePicker/WdatePicker.js">< ...

  3. spring源码学习之路---IOC初探(二)

    作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 上一章当中我没有提及具体的搭 ...

  4. C#_简单实用的翻页

    简单实用的生成翻页HTML辅助类 C# using System.Text; namespace ClassLibrary { /// <summary> /// /// </sum ...

  5. C语言break和continue

    break和continue C语言中有有两种结束循环的关键字:break和continue #include <stdio.h> #include <stdlib.h> in ...

  6. Java教程-Java 程序员们值得一看的好书推荐

    学习的最好途径就是看书“,这是我自己学习并且小有了一定的积累之后的第一体会.个人认为看书有两点好处: 能出版出来的书一定是经过反复的思考.雕琢和审核的,因此从专业性的角度来说,一本好书的价值远超其他资 ...

  7. Tree树形结构案例+源码

    上次用到Tree结构,自己不知道写,就在网上找了几个相对较好的tree小案例,留着自己用,希望也能帮到你 下面是案例的一些图片,压缩文件已近上传至博客当和百度云中. 下载链接:http://pan.b ...

  8. [转载]窗口之间的主从关系与Z-Order

    窗口之间的主从关系与Z-Order 原文地址:http://www.cnblogs.com/dhatbj/p/3288152.html说明:这是本人2008年写的一篇旧文,从未公开发表过.其中除了一小 ...

  9. js 进度条,可实现结束和重新开始

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  10. 本地数据库(SQL Server)远程连接服务器端服务器

    本地数据库(SQL Server 2012) 连接外网服务器的数据库,外网的服务器端需要做如下配置: 1. 首先是要打开 数据的配置管理工具 2. 配置相关的客户端协议,开启TCP/IP 3. 数据库 ...