-
Django处理一个请求的流程
-
在浏览器的地址栏中输入地址,回车,发了一个GET请求
-
wsgi模块接收了请求,将请求的相关信息封装成request对象
-
根据地址找到对应函数
-
执行函数获取到返回结果,wsgi模块将结果返回给浏览器
-
-
发请求的途径
-
在浏览器的地址栏中输入地址 get请求
-
a标签 get请求
-
form表单 get/post
-
-
函数
def xxxx(reqeust):
return HttpResponse()reqeust:
reqeust.GET url上携带的参数 ?k1=v1&k2=v2
reqeust.POST form表单提交POST请求的参数
request.method 请求方式 GET、POST
response:
HttpResponse('字符串') ——》 返回字符串
render(request,'模板的名字',{}) ——》 返回一个页面
redirect('地址') ——》 重定向
-
ORM
from django.db import models
class Publisher(models.Model):
name = models.CharField(max_length=32)
# 一对多的关系
class Book(models.Model):
name = models.CharField(max_length=32)
pub = models.ForeignKey(to='Publisher',on_delete=None)
def __str__(self):
return self.name查询:
from app01 import models
ret = models.Book.objects.all() # QuerySet 对象列表
for book in ret:
print(book)
print(book.name)
print(book.id) print(book.pk)
print(book.pub) # 所关联的对象
print(book.pub_id) # 所关联的对象id
obj = models.Book.objects.create(name='xxx',pub=出版社的对象)
obj = models.Book.objects.create(name='xxx',pub_id=出版社的对象id)
obj = models.Book(name='xxx',pub_id=出版社的对象id)
obj.save()删除
models.Book.objects.filter(pk=1).delete()
models.Book.objects.get(pk=1).delete()修改
models.Book.objects.filter(pk=1).update(name='xxx')
obj = models.Book.objects.filter(pk=1).first()
obj.name = 'xxxx'
obj.pub_id = 2
obj.save() -
模板语法
render(request,'模板的名字',{‘k1’:v1,'books':books})
{{ k1 }}
{% for i in books %}
{{ forloop.counter }}
{{ i }}
{% endfor %}
{% if 条件 %}
xxx
{% else %}
xxxxx
{% endif %}# 查询所有的作者信息
all_authors = models.Author.objects.all()
for author in all_authors:
print(author)
print(author.name)
print(author.books,type(author.books)) # 关系管理对象
print(author.books.all(),type(author.books.all())) # 所关联的所有的对象新增
book_id = request.POST.getlist('book_id')
# 插入数据
obj = models.Author.objects.create(name=author_name)
obj.books.set(book_id) # 设置多对多的关系
cookie
定义:
保存在浏览器本地上一组组键值对
特点:
1. cookie是由服务器进行设置的
-
浏览器保存在本地的
-
下次访问时自动携带对应的cookie
Django的操作:
-
设置
response.set_cookie(key,value) # Set-Cookie: is_login=1; Path=/
response.set_signed_cookie('is_login','1',salt='xxxx') -
获取
request.COOKIES # {}
request.COOKIES[key] .get(key)
request.get_signed_cookie(key,salt='xxxx',default='',max_age=5,path='/') -
删除
response.delete_cookie(key) # 设置键值对的值为空 超时时间为0