Django框架学习(一)

内容来源于【2020 最新python教程】第五部分:Django框架课程教学笔记

Django处理浏览器请求的流程

1.请求发送到了wsgi(Web服务器网关接口),wsgi封装请求的相关数据(request)
2. Django去匹配路径,根据路径判断要执行那个函数
3. 执行函数,函数中处理具体的业务逻辑
4. 函数返回响应,Django按照HTTP协议的响应的格式进行返回。

发请求的途径

  1. 在浏览器的地址栏中输入地址—>回车,得到get请求
  2. a标签–》得到get请求
  3. form表单常用的是发送post请求,method指定请求的方式,POST/GET

get和post请求的区别

get:获取一个资源,?k1=v1&k2=v2在地址栏中设置参数 get请求没有请求体
post:提交数据 request.POST,数据在请求体中

views.py

#简略版,流程
def login(request):
		#业务逻辑
		return 响应
HttpResponse(‘字符串’)#返回一个字符串
render(request,‘模板文件名’,{'k1':v1})
redirect('地址')#重定向

request.method   #请求方式,GET、POST

ORM

models.py

class Publisher(models.Model):#类对应数据库中的表
    name=models.CharField(max_length=32)#对应数据库中的varchar(32)
class Book(models.Model):
    name=models.CharField(max_length=32)
    publisher = models.ForeignKey(Publisher,on_delete=models.CASCADE)#外键关联,参数表示关联到什么地方
    #可以只写类名,也可以写成类名字符串形式;默认是级联删除(on_delete参数决定)
    '''
    on_delete 2.0版本后是必填的
    on_delete=models.CASCADE  级联删除,出版社删除,相关联的书籍被删除
    on_delete=models.PROTECT  保护,出版社还有相关联的数据时,不允许删除
    on_delete=models.SET(v) 删除后设置为某个值
    on_delete=models.SETDEFAULT 删除后设置为默认值
    publisher_id = models.ForeignKey(Publisher,on_delete=models.SETDEFAULT,default=‘默认值’)
    on_delete=models.SETNULL 删除后设置为Null
    models.DO_NOTTHINFG  什么都不做
    '''

ORM操作

查:

from app01 import models
models.Publisher.objects.all()#获取所有的数据,QuerySet 对象列表
models.Publisher.objects.get(name='xxx',id='1')#获取一条存在且唯一的数据,对象
models.Publisher.objects.filter(name='xxx',id='1')#获取多条数据,QuerySet 对象列表
ret =models.Book.objects.all()#对象列表
for book in ret:
	# print(book)
    # print(book.pk)
    # print(book.publisher)#书籍所关联的出版社对象(出版社的名字)
    # print(book.publisher_id)#书籍所关联的出版社id(book表中的出版社id)

新增

models.Publisher.objects.create(name=‘xxx’)#新增的对象
models.Book.objects.create(name=‘xxx’,publisher=出版社对象)#新增的对象,name和publisher字段与数据库中的字段一致
models.Book.objects.create(name=‘xxx’,publisher_id=出版社的id)#新增的对象

删除

models.Publisher.objects.get(name='xxx',id='1').delete()
models.Publisher.objects.filter(name='xxx',id='1').delete()#得到对象列表,批量删除

编辑

#方法一
book_obj.name='xxx'
book_obj.publisher=出版社对象
book_obj.publisher_id=出版社的id
book_obj.save()#这个步骤将数据同步保存在数据库中
#方法二
models.Book.objects.filter(pk=1).update(name='xxx',piblisher_id=出版社的id)#批量更新,.update()是对象列表的更新函数

模板的语法

return render(request,‘模板文件名’,{‘k1’:v1,‘k1’:v1})

在模板文件名中使用变量
{{ k1 }}  {{ k2 }}
#for循环的语法{% for i in k1 %}和{% endfor %}必须成对使用
{% for i in k1 %}
	{{ forloop.counter }}#得到循环的次数
	{{ i }}
{% endfor %}
#if的语法,{% if 条件 %}和{% endif %}必须成对使用
{% if 条件 %}
	xxx
{% elif 条件 %}
	xxx
{% else %}
	xxx
{% endif %}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值