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
原文:https://www.cnblogs.com/zhang-da/p/12051557.html