1.Model 例子
from django.db import models
class BlogIndex(models.Model):
BlogIndex_id = models.AutoField(primary_key=True ,null=False , unique=True)
BlogIndex_title = models.CharField(max_length=200)
class Blog(models.Model):
blog_id = models.AutoField(primary_key=True ,null=False , unique=True)
BlogIndex_id=models.ForeignKey(BlogIndex)
blog_title = models.CharField(max_length=200)
blog_text = models.TextField()
blog_time = models.DateTimeField(auto_now=True)
blog_popularity = models.IntegerField()
blog_from_url = models.URLField(max_length=1000)
ext_1 = models.CharField(max_length=500)
ext_2 = models.CharField(max_length=500)
2.View 例子
# Create your views here.
from django.http import HttpResponse
from django.template.loader import get_template
from django.template import Context
from django.shortcuts import render_to_response
import os
from datetime import *
from myweb.models import *
import json
def myWebView(request):
return render_to_response('index.html',{'name': 'lines'})
def addBlog(request):
blogType=request.POST.get('type')
blogtitle=request.POST.get('title')
blogtext=request.POST.get('text')
now=datetime.now()
bi=BlogIndex.objects.get(BlogIndex_id=blogType)
BL = Blog(
BlogIndex_id=bi,
blog_title=blogtitle,
blog_text=blogtext,
blog_time=now,
blog_popularity=0,
)
BL.save();
return HttpResponse("1")
def getBlog(request):
blogID=request.GET.get('id')
BL=Blog.objects.get(blog_id=blogID)
return render_to_response('blog.html',{'data': BL.blog_text})
def getTypeList(request):
BlogIndex_list = BlogIndex.objects.all()
data_array=[]
for obj in BlogIndex_list:
data = {'BlogIndex_id': obj.BlogIndex_id, 'BlogIndex_title': obj.BlogIndex_title}
data_array.append(data)
pass
return HttpResponse("var listJson ="+json.dumps(data_array))
def getIndex(request):
BlogIndex_list = BlogIndex.objects.all()
data_array=[]
for obj in BlogIndex_list:
inner_array=[];
for obj_inner in Blog.objects.filter(BlogIndex_id = obj.BlogIndex_id):
d_inner={'BlogIndex_id': obj_inner.blog_id, 'name': obj_inner.blog_title}
inner_array.append(d_inner)
pass
data = {'BlogIndex_id': obj.BlogIndex_id, 'name': obj.BlogIndex_title}
data_array.append(data)
pass
encodedjson = json.dumps(data_array)
return HttpResponse("var listJson ="+encodedjson)
def addIndex(request):
typeTitle=request.POST.get('typeTitle')
if typeTitle:
BI = BlogIndex(BlogIndex_title=typeTitle)
BI.save();
return HttpResponse(1)
else:
return HttpResponse(0)
3.常用的数据库查询条件
class A(models.Model):
name = models.CharField(u'名称')
class B(models.Model):
aa = models.ForeignKey(A)
B.objects.filter(aa__name__contains='searchtitle')
条件选取querySet的时候,filter表示=,exclude表示!=。
querySet.distinct() 去重复
__exact 精确等于 like 'aaa'
__iexact 精确等于 忽略大小写 ilike 'aaa'
__contains 包含 like '%aaa%'
__icontains 包含 忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。
__gt 大于
__gte 大于等于
__lt 小于
__lte 小于等于
__in 存在于一个list范围内
__startswith 以...开头
__istartswith 以...开头 忽略大小写
__endswith 以...结尾
__iendswith 以...结尾,忽略大小写
__range 在...范围内
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日
__isnull=True/False
例子:
>> q1 = Entry.objects.filter(headline__startswith="What")
>> q2 = q1.exclude(pub_date__gte=datetime.date.today())
>> q3 = q1.filter(pub_date__gte=datetime.date.today())
>>> q = q.filter(pub_date__lte=datetime.date.today())
>>> q = q.exclude(body_text__icontains="food")