版本: Django2.x

记一下平时写项目过程中遇到的点

创建 Django 项目

先进入到你想要创建 project 目录下,执行命令

django-admin startproject projectname

不报错即可,创建的文件结构为

创建apps

在project目录中执行

django-admin startapp appname

ORM对某个字段模糊搜索

写 filter 的时候字段名后面加上 __icontains 代表模糊搜索且不区分大小写

__contains 代表区分大小写的模糊搜索

例如

# 对name字段进行不区分大小写模糊搜索
xx.filter(name__icontains=value).xx
# 对name字段进行区分大小写的模糊搜索
xx.filter(name__contains=value).xx

ORM查询中的动态字段

如有这样的需求,某个查询是有多个参数,而参数可以有多个值也可以没有值.后端该怎么解决呢?

看有人套 if else 来判断出所有不停的情况,如果一两个可变字段还好,有多个的话代码该有多少

我们可以利用 ORM 的filter参数可传 **kwargs 的特征来写出既满足需求又可维护可扩展的代码,例如:

def search(**kwargs):
'''
查询组件
: param **kwargs:
: return querysite:
''' # 本次ORM查询
filter_kwargs = dict() # 因时间区间判断ORM需要指定不同的key所以分别判断
# 指定开始/结束时间
if (kwargs["start_time"] and kwargs["end_time"]):
filter_kwargs["online_time__range"] = (kwargs["start_time"], kwargs["end_time"])
# 指定开始时间
elif kwargs["start_time"]:
filter_kwargs["online_time__gt"] = kwargs["start_time"]
# 指定结束时间
elif kwargs["end_time"]:
filter_kwargs["online_time__lte"] = kwargs["end_time"] # 普通字段
# 有上/下线状态
if kwargs["status"]:
filter_kwargs["status"] = kwargs["status"] # 有IP,模糊匹配,不区分大小写
if kwargs["ip"]:
filter_kwargs["ip__icontains"] = kwargs["ip"] # 按online_time排序
querysite = log.objects.filter(**filter_kwargs).order_by('-online_time')
return querysite

利用filter的特征,我们没必要将其所有搭配情况写全,而是只对某个单一字段进行分别区分,打个比方,如果你传了ip字段,那么我就在filter中加上ip字段.

然后将这个集合了当前查询的匹配字典,传入**kwargs会将字典打成 k=v 的形式传入, 达到同样的效果.

如果字段要增加/删除/修改 则只需要修改该字段的判断即可

Django 2.x 常用命令的更多相关文章

  1. django forms的常用命令及方法(二)

    根据别人网上发布,个人爱好收集 1.创建Form类 from django.forms import Form from django.forms import widgets from django ...

  2. django forms的常用命令及方法(一)

    根据别人网上发布,个人爱好收集 Form表单的功能 自动生成HTML表单元素 检查表单数据的合法性 如果验证错误,重新显示表单(数据不会重置) 数据类型转换(字符类型的数据转换成相应的Python类型 ...

  3. Django常用命令及参数配置(Django 1.8.6)

    常用命令 #新建Django项目 django-admin startproject mysite(项目名) #新建一个APP cd mysite python manager.py startapp ...

  4. django 常用命令

    django 常用命令,备忘: django-admin.py startproject test 创建一个项目名叫test的项目 python manage.py startapp app 创建一个 ...

  5. linux --- 2.常用命令 , python3, django安装

    一.常用命令 1.常识命令 ① w      显示终端连接数 ②pwd    我在哪 ③whoami      我是谁 ④which 命令        找到命令的绝对路径 2.linux 命令行的组 ...

  6. web 架构 /http协议,状态码,django中常用命令

    什么是web应用? web应用 架构 :B/S架构 | C/S架构 网站:BS架构其实就是应用程序: B是浏览器 S是sever(实现了wsgi协议,实现了socket的服务端) + applicat ...

  7. Django中常用命令

    Django 基本命令 熟练使用Django常用命令能让你事半功倍!!!! 1. 新建一个 django project django-admin.py startproject project-na ...

  8. 22,Django常用命令

    学习Django你需要了解常见命令的使用,比如创建项目,创建应用,创建超级用户,数据表创建及更新,启动服务器等.这些命令都包含在django-admin.py和manage.py里.除此以外manag ...

  9. Django常用 命令

    Django常用 命令: 安装: pip install django 指定版本 pip3 install django==2.0 新建项目: django-admin.py startproject ...

随机推荐

  1. SQL Server进阶(十)事务和并发处理

    1 https://www.cnblogs.com/edisonchou/p/6129717.html

  2. 使用js弹出div刷新时闪烁解决方法

    <div style="visibility: hidden"> //弹出div内容 </div>

  3. 【四】Java虚拟机内存区域初识

     一.线程独占区  1.程序计数器 程序计数器是一块处于线程独占区较小的内存空间,它可以看是当前线程所执行的字节码的行号指示器. 如果线程执行的是Java方法,这个计数器记录的是正在执行的虚拟机字节码 ...

  4. 十种MYSQL显错注入原理讲解(三)

    这回间隔时间有点长了,年前年后忙的头晕眼花,外加大病.下面我继续讲解. 1.multipolygon() and multipolygon((select * from(select * from(s ...

  5. 【刷题记录】BZOJ-USACO

    接下来要滚去bzoj刷usaco的题目辣=v=在博客记录一下刷题情况,以及存一存代码咯.加油! 1.[bzoj1597][Usaco2008 Mar]土地购买 #include<cstdio&g ...

  6. PHP调用API接口实现天气查询功能

    天气预报查询接口API,在这里我使用的是国家气象局天气预报接口 使用较多的还有:新浪天气预报接口.百度天气预报接口.google天气接口.Yahoo天气接口等等. 1.查询方式 根据地名查询各城市天气 ...

  7. PHP中遍历二维数组—以不同形式的输出操作

    <body> <?php //定义二维索引数组$arr = array(    array("101","李军","男", ...

  8. 第28月第4天 __bridge_transfer

    1. /* NSObject.h Copyright (c) 1994-2018, Apple Inc. All rights reserved. */ #if __has_feature(objc_ ...

  9. Shiro入门 - 通过自定义Realm连数数据库进行授权

    shiro-realm.ini [main] #自定义Realm myRealm=test.shiro.MyRealm #将myRealm设置到securityManager,相当于Spring中的注 ...

  10. JavaWeb(一)Servlet

    一.Servlet简介 Servlet 是J2EE的一个规范,为Java提供统一的web应用规范. 广义的Servlet 是指实现了servlet的类 二.Servlet工作原理 1.原理: 一个ht ...