Django 学习笔记
上了《BS体系软件设计》这门课,但我对 web 一无所知。最终决定用 Django + Vue 的架构完成课程设计,所以这篇文章是对 Django 做一个初步的学习和总结。
命令行操作
1 | django-admin startproject mysite # 创建叫做 mysite 的 project |
简单的网页请求处理 views.py & urls.py
1 | from django.http import HttpResponse |
静态模板 html 的使用
1 | <!-- 使用某个 views 里的函数来决定网址 --> |
与数据库交互 models.py
1 | from django.db import models |
-
QuerySet 创建对象
1
2
3Author.objects.create(name = "", email = "")
a = Author(name = ""); a.email = ""; save()
Author.objects.get_or_create(name = "", email = "") # 返回 (object, True/False) -
QuerySet 的查询,删除和修改
- 批量更新,适用于
.all()
.filter()
.exclude()
等后面。 - 单个 object 更新,适合
.get()
get_or_create()
,update_or_create()
等后面。
1
2
3
4
5
6
7
8
9Person.objects.all()[:10] # 切片不支持负数
Person.objects.get(name = "") # 用来找一个对象(找到多个会报错)
Person.objects.filter(name__exact = "ab") # 找到所有 name 正好等于 ab 的对象
Person.objects.filter(name__contain = "ab") # 找到所有 name 包含 ab 的对象
Person.objects.filter(name__regex = "^ab") # 正则表达式查询
Person.objects.exclude(name__contains = "ab") # 找到所有不符合要求的
# 关键词前面加 i 表示不区分大小写,如 name_iexact
people = Person.objects.filter(name = "abc")
people.delete()/update(name = "") # 删除/修改 - 批量更新,适用于
-
QuerySet 的其他操作
1
2
3
4
5
6es = Person.objects.all()
for e in es: print(e.name) # 可迭代
list(es) # 将 es 变成 list
.exists(), .distinct() .count(), len() # 是否存在,去重,个数
Person.objects.all().reverse()[:2] # 查看最后两条
qs = qs1 | qs2 | qs3 # 合并(会出现重复)
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.