在模型中使用ORM将对象等数据转化为SQL语句再通过迁移输入到数据库中
Cookie的处理分为:
服务器像客户端发送cookie
浏览器将cookie保存
之后每次http请求浏览器都会将cookie发送给服务器端
cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session。
python manage.py createsuperuser
创建admin账户
http://127.0.0.1:8000/admin 进行后台管理
ForeignKey,ManyToManyField与OneToOneField分别在Model中定义多对一,多对多,一对一关系。
django会自动为每个类增加IntegerField 来生成主键 id = models.AutoField(primary_key=True)
#(pk=1)等价于(id=1)
类名_set是内置的,是对相关联的类之间反向查找的方法.详见https://blog.youkuaiyun.com/aaazz47/article/details/78914956/
另:
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=128)
def __str__(self):
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
def __str__(self):
return self.name
class Membership(models.Model):
person = models.ForeignKey(Person, on_delete=models.CASCADE)
group = models.ForeignKey(Group, on_delete=models.CASCADE)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
>>> ringo = Person.objects.create(name="Ringo Starr")
>>> paul = Person.objects.create(name="Paul McCartney")
>>> beatles = Group.objects.create(name="The Beatles")
>>> m1 = Membership(person=ringo, group=beatles,
... date_joined=date(1962, 8, 16),
... invite_reason="Needed a new drummer.")
>>> m1.save()
>>> beatles.members.all()
<QuerySet [<Person: Ringo Starr>]>
>>> ringo.group_set.all()
<QuerySet [<Group: The Beatles>]>
查询id为1的图书关联的英雄信息.
b=bookinfo.objects.get(id=1)
b.heroinfo_set.all()
通过模型类查询:
heroinfo.objects.filter(hbook__id=1)
查询id为1的英雄关联的图书信息
h=heroinfo.objects.get(id=1)
h.hbook
通过模型类查询:
bookinfo.objects.filter(heroinfo__id=1)
get:返回一条且只能有一条数据,返回值是一个对象,参数可以写查询条件.
all:返回模型类对应表的所有数据,返回值是QuerySet.
filter:返回满足条件的数据,返回值是QuerySet参数可以写查询条件.
exclude:返回不满足条件的数据,返回值是QuerySet参数可以写查询条件.
order_by:对查询结果进行排序,返回值是QuerySet,参数中写排序的字段.
- all,filter,exclude,order_by返回值是QuerySet类的实例对象,叫做查询集.