django book querysets
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的更多相关文章
- 有效使用Django的QuerySets
对象关系映射 (ORM) 使得与SQL数据库交互更为简单,不过也被认为效率不高,比原始的SQL要慢. 要有效的使用ORM,意味着需要多少要明白它是如何查询数据库的.本文我将重点介绍如何有效使用 Dja ...
- Django——QuerySets酷毙了!
Django的QuerySets酷毙了! 在本文中我将解释一下QuerySets是什么,它是如何工作的(如果你对它已经熟悉了,你可以直接跳到第二部分),我认为如果可以的话你应该总是返回QuerySet ...
- django性能优化
1. 内存.内存,还是加内存 2. 使用单独的静态文件服务器 3. 关闭KeepAlive(如果服务器不提供静态文件服务,如:大文件下载) 4. 使用memcached 5. 使用select_rel ...
- Django 数据库查询优化
Django数据层提供各种途径优化数据的访问,一个项目大量优化工作一般是放在后期来做,早期的优化是“万恶之源”,这是前人总结的经验,不无道理.如果事先理解Django的优化技巧,开发过程中稍稍留意,后 ...
- Django的性能优化
Django的性能优化 一,利用标准数据库优化技术 传统数据库优化技术博大精深,不同的数据库有不同的优化技巧,但重心还是有规则的.在这里算是题外话,挑两点通用的说说: 索引,给关键的字段添加索引, ...
- Django : Security in Django
Security in Django https://docs.djangoproject.com/en/1.10/topics/security/ 1 Cross site scripting (X ...
- Django中不返回QuerySets的API -- Django从入门到精通系列教程
该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453 ...
- django不返回QuerySets的API
以下的方法不会返回QuerySets,但是作用非常强大,尤其是粗体显示的方法,需要背下来. 方法名 解释 get() 获取单个对象 create() 创建对象,无需save() get_or_crea ...
- 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 ...
随机推荐
- 转载 r.js打包经验
例子1 先是HTML页面 <!DOCTYPE html> <html> <head> <title>My App</tit ...
- Issues I encountered when building Windows Store apps on a new laptop
I took over my beloved wives samsung ativ book 9 recently as her first job granted her a brandnew su ...
- ACM: 限时训练题解-Heavy Coins-枚举子集-暴力枚举
Heavy Coins Bahosain has a lot of coins in his pocket. These coins are really heavy, so he always ...
- 【POJ2104/2761】K-th Number
Description You are working for Macrohard company in data structures department. After failing your ...
- UESTC 30 最短路,floyd,水
最短路 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Statu ...
- 热烈庆祝华清远见成功自主研发Farsight TV 智能机顶盒
近日,华清远见研发中心再传喜讯:Farsight TV 智能机顶盒研发成功并投入教学!这是华清远见研发中心继开源平板电脑.智能医疗终端.智能家居终端后独立成功研发的又一智能硬件!至此,开创了华清远见自 ...
- bootstrap如何给.list-group加上序号
在bootstrap中,我们可以使用不带任何class的<ol>跟<li>来创建一个有序列表,但是如果加上list-group类,样式有了,但列表前面的数字却没了. Boots ...
- Point Grey FlyCapture 实例汇总
Example Language Description AsyncTriggerEx C++ Demonstrates some of the basic asynchronous trigger ...
- Hive_进阶
回顾: hive 优点 1. 类sql语句靠近关系型数据库,可自定义函数,增加了扩展性,易于开发,减少mapreduce学习成本 2. hive转换sql语句为mapreduce程序以mapreduc ...
- Android 图片轮播(最简单的)
布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android ...