创建第一个项目
django-admin startproject django_hello
开启测试服务器
python manage.py runserver abc.com:8000 abc.com:9000 NO 跨域请求 ajax a.abc.com b.abc.com YES
项目目录结构
-
__init__.py
: 声明当前文件夹为一个可导入的包 -
settings.py
: 整个项目的配置文件 -
urls.py
: 主控路由映射文件 -
wsgi.py
: 项目上线时使用的uwsgi服务器的连接文件 -
manage.py
: 控制管理当前项目
配置信息修改
ALLOWED_HOSTS = ["*"]
谁可以访问我ANGUAGE_CODE = 'zh-Hans'
语言TIME_ZONE = 'Asia/Shanghai'
时区
创建子app
python manage.py startapp( app名字)
子app目录结构
-
admin.py
: django内置了一个数据库管理工具 -
models.py
: 数据库,模型类 -
views.py
: 存储不同
django组件探究
返回HTML页面,模板页面
-
保存模板页面 TEMPLATES->'DIRS': [os.path.join(BASE_DIR,'template')],
静态资源 settings-> STATICFILES_DIRS -> (os.path.join(BASE_DIR,'static'),)
表单提交
-
-
第一步,用户GET方法访问 拿到表单
-
-
-
输入表单 POST提交
-
-
-
当表单为多值情况,get方法只能获取到最后一个数,如果想获取到全部的要用getlist
-
建表数据迁移
python manage.py makemigrations
创建表
python manage.py migrate
自定义标签
-
可以支持无限参数,
-
过滤器:{{ var|fitler:var1}}
-
标签:{% url arg1 arg2 ... %}
django操作数据库的增删改查
-
查询
-
objects.all():获取表中所有数据
-
结果集
-
-
objects.filter()
-
支持链式查询:用字段__条件
-
条件:startswith endswith gte lte gt lt
-
equal:相等的意思
-
-
objects.exclude()
-
objects.get()
-
多个结果报错:modelapp.models.MultipleObjectsReturned: get() returned more than one Babe -- it returned 2!
-
modelapp.models.DoesNotExist: Babe matching query does not exist.
-
数据表没数据
-
没迁移
-
-
-
objects.order_by()
-
objects.count()
-
objects.values()
-
-
改:
-
先要查询到你要改谁
-
接着在内存中 res.filed = other res.save()
-
res.update()
-
-
删除:
-
res.delete()
-
queryset.delete()
-
一对一的增删改查
-
创建:
-
关联关系的数据创建
-
先得把那个关联的值创建出来
-
然后再赋值到这个字段上
-
m1 = Man
-
f1 = Father(man=m1)
-
-
-
查询
-
从表的层面:
-
从Father查。名字是李四的父亲
-
Father(man__字段名='')
-
res = models.Father.objects.filter(man__name__startswith='李')
-
-
查询所有小孩名为聪明的小孩的父亲
-
res = models.Father.objects.filter(babe__startswith='聪明')
-
-
-
从数据的层面:
-
获取到一个Father数据的Man数据
-
res.man.name
-
-
获取一个Man是不是一个Father
-
不能的:OneToOneField
-
-
-
-
改:
-
找一个关联字段的同类数据
-
直接赋值即可,记得save
-
-
删:
-
on_delete=models.SET_NULL
-
关联数据删除,本数据不动
-
-
on_delete=models.CASCADE
-
关联数据删除,全部删除
-
-
多对一的增删改查
-
-
首先创建老师数据
-
t1 = models.Teacher.objects.create(name='赵老师')
-
-
再创建学生数据
-
s1 = models.Student.objects.create(teacher=t1,name='张同学')
-
-
-
查询:
-
表层面:
-
查询所有赵老师的学生
-
models.Student.objects.filter(teacher__name='赵老师')
-
正向查询
-
-
带张同学的老师:
-
models.Teacher.objects.filter(student__name='张同学')
-
反向查询
-
-
数据层面:
-
张同学的老师:正向查询
-
s1.teacher
-
-
李老师的全部学生:反向查询
-
student_set == Student.objects
-
-
-
-
改:
-
字段赋值再save
-
-
删:
-
直接delete,根据on_delete属性设置,做不同的动作
-
将赵老师的所有学生删除
-
t1.student_set.all().delete()
-
models.Teacher.objects.all().delete()
-
-
-
-
服务端 - 客户端
-
短链接:无法保存客户端状态
-
HTTP
HTTPS
-
COOKIE保存在哪里?客户端
-
明文暴露给客户端
-
设置COOKIE:
-
res = HttpResponse
-
res.set_cookie(key, value , max_age=)
-
res.set_cookie(key, value , max_age=)
-
默认的COOKIE有效期是多久?
-
关闭浏览器,COOKIE即消失
-
-
render
-
redirect
-
-
获取COOKIE:
-
request.COOKIES.get(key)
-
-