版本: 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. TCP简单回射程序

    一.程序功能 (1)客户从标准输入读入一行文本行,并写给服务器: (2)服务器从网络输入读入这行文本,并回射给客户: (3)客户从网络输入读入这行回射文本,并显示在标准输出上 二.服务器程序 #inc ...

  2. 利用PHP访问数据库——实现分页功能与多条件查询功能

    1.实现分页功能 <body><table width="100%" border="1">  <thead>    < ...

  3. 【转】AJAX 跨域请求 - JSONP获取JSON数据

    来源:http://justcoding.iteye.com/blog/1366102/ Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流 ...

  4. Understanding a project which include NodeJS, Webpack, Vue

    公司有一个web 项目是用 Vue 写的, 前段时间负责这个tool的人离职了没有人维护,其他人又很忙,我就去看了一下以便以后能加一些新功能在上面 没有接触过Vue, 这些理解了一下关系做一些学习记录 ...

  5. Thymeleaf--:fragment

    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" ...

  6. Servlet 线程安全

    普通类的静态属性,当被多个线程访问时,就有线程安全问题: Servlet 也一样 当多个客户端并发访问同一个Servlet时,web服务器会为每一个客户端的访问请求创建一个线程,并在这个线程上调用Se ...

  7. 《2013传智播客视频》-wmv,avi,mp4.目录

    \!--14俄罗斯方块\视频\.复习.avi; \!--14俄罗斯方块\视频\ 复习.avi; \!--14俄罗斯方块\视频\ 形状旋转.avi; \!--14俄罗斯方块\视频\ 判断形状能否变形.a ...

  8. 20165234 《Java程序设计》第九周学习总结

    第九周学习总结 教材内容学习 第十三章 Java 网络编程 URL 类 URL 类是 java.net 包中的一个重要的类,使用URL创建对象的应用程序称为客户端程序. 一个 URL 对象通常包含最基 ...

  9. GridView item设置点击背景

    GridView item设置点击背景 android:listSelector="@android:color/transparent"

  10. 编写Python脚本进行ARP欺骗

    1.系统环境:Ubuntu 16.04 Python版本:2.7 2.攻击机器:Ubuntu(192.16.0.14) 目标机器:Windows 7(192.168.0.9) 网关:(192.168. ...