Django学习随手记(一)

本文介绍了从PHP框架转向Django的体会,探讨了Django的MTV模式,其中M表示模型,T代表模板,V作为视图处理数据。在调试方面,分享了如何打印SQL语句,并对比了多表联查的三种方法:原生SQL、select_related和 prefetch_related,重点提到了第三种方法的实际应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在学习使用python做web开发,使用的是Django框架,以下几点总结一下。

之前用PHP框架做开发,Yii,ThinkPHP,CI都是MVC类型的。M为Model即模型层;V为View即数据展示;C为Controller即数据处理。此处Django属于MTV类型。M也是模型。T为template即展示模板,相当于前面的View。而此处V虽然也译为View但却相当于前面的Controller,是用于进行数据处理的。

使用下来,个人感觉Django开发调试没有PHP那么简单易用。

调试时需要打印出sql语句,可以这样用:

key_list = AccessKey.objects.all().order_by('id')
sql= str(key_list.query)

这样,sql即刚刚的sql语句。

关于多表联查,有几种方案:

  • 方案一:编写原生的语句做查询(不够实用,较为麻烦,对于特别复杂的查询可以用此方法)
  • 方案二:使用select_related方法,刚刚的语句可写成:
key_list = AccessKey.objects.select_related('user').all().order_by('id')

但是这有个大前提就是accesskey表中已经设置好了外键,而很多时候我们会省略外键的设置。

  • 方案三:在model.py中的AccessKey类中添加
user = models.ForeignKey(User,related_name="user_id")

然后再返回return '%s' % (self.user.name)

我用第三种方法成功了,但是原理还不是很清楚,后续研究后再进行补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值