Python篇:Django框架之高级及模糊查询

Python篇:Django框架之高级及模糊查询

Django是集成框架,功能齐全。

Django基本操作:

django模型

Django无需自己建对象的实体类,无需再封装等。

直接可以从数据库中导入。

SQL也无需再编写,直接调用框架本身的方法即可。

from django.shortcuts import render
from django.shortcuts import HttpResponse
from django.shortcuts import redirect
from Student.models import *


# Create your views here.


def first(request):
    if request.method == 'POST':
        userName = request.POST.get('userName')
        users = User.objects.filter(userid__isnull=True)
            # (username__contains=userName)
            # (userid__gt=2) 模糊查询 双下划线
    else:
        users = User.objects.all()
        # .order_by('-userid') 排序 属性前加- 即反序
    count = users.__len__()
    return render(request, 'first.html', context={'users': users, 'count': count})


# {% csrf_token %} Forbidden (403)

def delete(request):
    uid = request.GET.get('uid')
    User.objects.filter(userid=uid).delete()  # 找到则删除
    return redirect('first.html')


def update(request):
    uid = request.GET.get('uid')
    user = User.objects.get(userid=uid)
    return render(request, 'update.html', context={'user': user})


def updateUser(request):
    userId = request.POST.get('userId')
    userName = request.POST.get('userName')
    userSay = request.POST.get('userSay')
    User.objects.filter(userid=userId).update(username=userName, usersay=userSay)
    return redirect('first.html')


def insert(request):
    return render(request, 'insert.html')


def insertUser(request):
    userName = request.POST.get('userName')
    userSay = request.POST.get('userSay')
    User.objects.create(username=userName, usersay=userSay)
    return redirect('first.html')  # 重定向

# def insert(request):
#     if request.method=='POST':
#         userName=request.POST.get('userName')
#         userSay=request.POST.get('userSay')
#         User.objects.create(username=userName,usersay=userSay)
#         return redirect('first.html')
#     else:
#         return render(request, 'insert.html')

代码如上。

User.objects.filter(username__contains=userName)

.objects.all():查询所有

User.objects.all() .order_by('userid') 排序 默认正序

User.objects.all() .order_by('-userid') 排序 属性前加- 即反序

 
 

username__contains:username是对象的属性,加上双下划线+contains=传入值,即可模糊查询。

对象名.objects.filter:能拿到多个对象

条件查询:

例如:查询id大于2的对象数据。

.objects.filter(id__get=2)

User.objects.filter(userid__isnull=True):筛选某字段是为空的对象

User.objects.filter(userid__isnull=False):筛选某字段不为空的对象

对象名.objects.get:具体拿到指定的一个对象

没有符合条件的,则DoseNotExist报错


值得借鉴: