django 学习笔记
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 | python manage.py makemigrations python manage.py migrate 获取对象有以下方法: Person.objects.all() Person.objects.all()[:10] Person.objects.get(name=name) Person.objects.filter(name="abc") Person.objects.filter(name__iexact="abc") # 名称为 abc 但是不区分大小写,可以找到 ABC, Abc, aBC,这些都符合条件 Person.objects.filter(name__contains="abc") # 名称中包含 "abc"的人 Person.objects.filter(name__icontains="abc") #名称中包含 "abc",且abc不区分大小写 Person.objects.filter(name__regex="^abc") # 正则表达式查询 Person.objects.filter(name__iregex="^abc") # 正则表达式不区分大小写 Person.objects.exclude(name__contains="WZ") # 排除包含 WZ 的Person对象 Person.objects.filter(name__contains="abc").exclude(age=23) # 找出名称含有abc, 但是排除年龄是23岁的 1. QuerySet 创建对象的方法 # 方法 1 Author.objects.create(name="WeizhongTu", email="tuweizhong@163.com") # 方法 2 twz = Author(name="WeizhongTu", email="tuweizhong@163.com") twz.save() # 方法 3 twz = Author() twz.name="WeizhongTu" twz.email="tuweizhong@163.com" twz.save() # 方法 4,首先尝试获取,不存在就创建,可以防止重复 Author.objects.get_or_create(name="WeizhongTu", email="tuweizhong@163.com") # 返回值(object, True/False) 备注:前三种方法返回的都是对应的 object,最后一种方法返回的是一个元组,(object, True/False),创建时返回 True, 已经存在时返回 False 3. 删除符合条件的结果 Person.objects.filter(name__contains="abc").delete() # 删除 名称中包含 "abc"的人 如果写成 people = Person.objects.filter(name__contains="abc") people.delete() 效果也是一样的,Django实际只执行一条 SQL 语句 得到满足条件的结果,然后 delete 就可以(危险操作,正式场合操作务必谨慎) 4. 更新某个内容 (1) 批量更新,适用于 .all() .filter() .exclude() 等后面 (危险操作,正式场合操作务必谨慎) (2) 单个 object 更新,适合于 .get(), get_or_create(), update_or_create() 等得到的 obj,和新建很类似 twz = Author.objects.get(name="WeizhongTu") twz.name="WeizhongTu" twz.email="tuweizhong@163.com" twz.save() # 最后不要忘了保存!!! 6. QuerySet 是可以用pickle序列化到硬盘再读取出来的 >>> import pickle >>> query = pickle.loads(s) # Assuming 's' is the pickled string. >>> qs = MyModel.objects.all() >>> qs.query = query # Restore the original 'query'. 7. QuerySet 查询结果排序 Author.objects.all().order_by('name') Author.objects.all().order_by('-name') # 在 column name 前加一个负号,可以实现倒序 8. QuerySet 支持链式查询 Author.objects.filter(name__contains="WeizhongTu").filter(email="tuweizhong@163.com") Author.objects.filter(name__contains="Wei").exclude(email="tuweizhong@163.com") # 找出名称含有abc, 但是排除年龄是23岁的 Person.objects.filter(name__contains="abc").exclude(age=23) 9. QuerySet 不支持负索引 Person.objects.all()[:10] 切片操作,前10条 Person.objects.all()[-10:] 会报错!!! # 1. 使用 reverse() 解决 Person.objects.all().reverse()[:2] # 最后两条 Person.objects.all().reverse()[0] # 最后一条 # 2. 使用 order_by,在栏目名(column name)前加一个负号 Author.objects.order_by('-id')[:20] # id最大的20条 10. QuerySet 重复的问题,使用 .distinct() 去重 一般的情况下,QuerySet 中不会出来重复的,重复是很罕见的,但是当跨越多张表进行检索后,结果并到一起,可能会出来重复的值(我最近就遇到过这样的问题) qs1 = Pathway.objects.filter(label__name='x') qs2 = Pathway.objects.filter(reaction__name='A + B >> C') qs3 = Pathway.objects.filter(inputer__name='WeizhongTu') # 合并到一起 qs = qs1 | qs2 | qs3 这个时候就有可能出现重复的 # 去重方法 qs = qs.distinct() 假设一篇文章只有一个作者(Author), 一个作者可以有多篇文章(Article), 一篇文章可以有多个标签(Tag) import os django.contrib.auth request.session[key] = value request.session.get(key, default=None) del request.session[key] arr.append() arr = [] arr1 + arr2 %s % name %d # Ajax <! DOCTYPE html> < html > < body > < p >请输入两个数字</ p > < form action="/add/" method="get"> a: < input type="text" id="a" name="a"> < br > b: < input type="text" id="b" name="b"> < br > < p >result: < span id='result'></ span ></ p > < button type="button" id='sum'>提交</ button > </ form > < script src="http://apps.bdimg.com/libs/jquery/1.11.1/jquery.min.js"></ script > < script > $(document).ready(function(){ $("#sum").click(function(){ var a = $("#a").val(); var b = $("#b").val(); $.get("/add/",{'a':a,'b':b}, function(ret){ $('#result').html(ret) }) }); }); </ script > </ body > </ html > # CSRF cross-site request forgery # Python 类型 bool int float str list tuple set dict reduce if-elif-else if __name__ == "__main__": *args 元组 **args 字典键值对 lambda s:s*n 直接给发钱 class open: def __init__(self, fillPath): import sys open('', 'w') import os os.system rename remove linesep isfile # 微信验证 博客系统 培训机构 页面 ID title descript city address 111 公司名称 详情经历描述 城市 具体地址 搜素功能 关键词 模糊搜索 按照城市 公司名称 数据提交 评论 跟评 点赞 可信度 浏览量 广告 展示 列表页 详情页: 图片 无视频 分页 详情页 有标题 摘要 描述内容 发布时间 评论 编辑器 ORM Forms CSRF Migrations Validators Caching Sites Testing Templates Admin Comments Dev Server Auth I18N Authorization # settings.py 把英文改为中文 LANGUAGE_CODE = 'zh-hans' 把国际时区改为中国时区 TIME_ZONE = 'Asia/Shanghai' TEMPLATES=[ { ... 'DIRS': [os.path.join(BASE_DIR, 'templates')], ... } ] DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'imook', 'USER': 'root', 'PASSWORD': 'zxcv1234', 'HOST': 'localhost', 'PORT': '3306', 'OPTIONS': { 'autocommit': True, }, } } 最关键的一点,在站点的__init__.py文件中 import pymysql pymysql.install_as_MySQLdb() 互联网彩票 模式 代理发行销售 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 从 Windows Forms 到微服务的经验教训
· 李飞飞的50美金比肩DeepSeek把CEO忽悠瘸了,倒霉的却是程序员
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee