Django 2.x 常用命令
版本: 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 常用命令的更多相关文章
- django forms的常用命令及方法(二)
根据别人网上发布,个人爱好收集 1.创建Form类 from django.forms import Form from django.forms import widgets from django ...
- django forms的常用命令及方法(一)
根据别人网上发布,个人爱好收集 Form表单的功能 自动生成HTML表单元素 检查表单数据的合法性 如果验证错误,重新显示表单(数据不会重置) 数据类型转换(字符类型的数据转换成相应的Python类型 ...
- Django常用命令及参数配置(Django 1.8.6)
常用命令 #新建Django项目 django-admin startproject mysite(项目名) #新建一个APP cd mysite python manager.py startapp ...
- django 常用命令
django 常用命令,备忘: django-admin.py startproject test 创建一个项目名叫test的项目 python manage.py startapp app 创建一个 ...
- linux --- 2.常用命令 , python3, django安装
一.常用命令 1.常识命令 ① w 显示终端连接数 ②pwd 我在哪 ③whoami 我是谁 ④which 命令 找到命令的绝对路径 2.linux 命令行的组 ...
- web 架构 /http协议,状态码,django中常用命令
什么是web应用? web应用 架构 :B/S架构 | C/S架构 网站:BS架构其实就是应用程序: B是浏览器 S是sever(实现了wsgi协议,实现了socket的服务端) + applicat ...
- Django中常用命令
Django 基本命令 熟练使用Django常用命令能让你事半功倍!!!! 1. 新建一个 django project django-admin.py startproject project-na ...
- 22,Django常用命令
学习Django你需要了解常见命令的使用,比如创建项目,创建应用,创建超级用户,数据表创建及更新,启动服务器等.这些命令都包含在django-admin.py和manage.py里.除此以外manag ...
- Django常用 命令
Django常用 命令: 安装: pip install django 指定版本 pip3 install django==2.0 新建项目: django-admin.py startproject ...
随机推荐
- Java动态代理 深度详解
代理模式是设计模式中非常重要的一种类型,而设计模式又是编程中非常重要的知识点,特别是在业务系统的重构中,更是有举足轻重的地位.代理模式从类型上来说,可以分为静态代理和动态代理两种类型. 今天我将用非常 ...
- [译]使用mediatR的notification来扩展的的应用
原文 你不希望在controller里面出现任何领域知识 开发者经常有这样的疑问"这个代码应该放在哪呢?"应该使用仓储还是query类?.... 怎么去实现职责分离和单一职责呢? ...
- MYSQL ERROR 1045 (28000) Access denied for user (using password YES)问题的解决
我的Linux是Centos6.7的版本,本机上Mysql突然怎么连接都进不去 报错:MYSQL ERROR 1045 (28000) Access denied for user (using pa ...
- 第20月第29天 cocoa抽象工厂 cocoapods组件化 cocoapods升级
1. 在 Cocoa Touch 框架中,类簇是抽象工厂模式在 iOS 下的一种实现,以 NSArray 举例,将原有的 alloc+init 拆开写: id obj1 = [NSArray allo ...
- spring cloud(学习笔记) Enreka服务治理
服务治理是微服务架构最为核心和基础的模块,主要用来实现各个微服务实例的自动化注册和发现. 记录一下服务注册中心的搭建以及高可用注册中心的实现 1.首先创建两个基础 的spring boot工程,spr ...
- python---issubclass/type/isinstance/ 反射(内置函数getattr/delattr...)
# 一 python面向对象-内置函数(issubclass(), type(), isinstance()) # issubclass 判断xxxx类是否是xxxx类的子类 class egg: p ...
- 比较python类的两个instance(对象) 是否相等
http://www.yihaomen.com/article/python/281.htm 比较python类的两个instance(对象) 是否相等 作者:轻舞肥羊 日期:2012-10-25 字 ...
- 通用redis命令
Redis五种数据类型,String,hash,list,set,有序set keys pattern:获取所有与pattern匹配的key,返回所有与该key匹配的keys. 通配符: *表示任意0 ...
- 20165337岳源 第四次实验 Android开发
1.实验要求: 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)>第二十四章 参考http://www.cnblogs.com ...
- os及os.path练习题
查找目录下每个文件的数量(考察获取文件后缀名以及获取当前目录下文件方法) import os #获取目录下的所有文件 list = os.listdir('.') filetype = {} for ...