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="[email protected]")
# 方法 2
twz = Author(name="WeizhongTu", email="[email protected]")
twz.save()
# 方法 3
twz = Author()
twz.name="WeizhongTu"
twz.email="[email protected]"
twz.save()
# 方法 4,首先尝试获取,不存在就创建,可以防止重复
Author.objects.get_or_create(name="WeizhongTu", email="[email protected]")
# 返回值(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="[email protected]"
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="[email protected]")
Author.objects.filter(name__contains="Wei").exclude(email="[email protected]")
# 找出名称含有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()
互联网彩票 模式 代理发行销售