学习Django(续)

P43 8.01内建用户系统

【续】该博主《学习Dajngo》
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
只存session,但(登录状态保持)时间不可控。
先校验密码,再调用login(正常应该先判断用户是否存在,再调用login)

在这里插入图片描述
当进行操作时,可能需要校验登录状态,在该方法前加@login_required
在这里插入图片描述
【一个例子】
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
#上下两个截图顺序有点乱,暂未核实(应该是 缺少部分)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
#并没有看出是怎么跳转的欸,别的方法里还是views里

配置
在这里插入图片描述

在这里插入图片描述
查看,会自动跳转
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
一对一,后面更复杂;继承前面复杂后面简单
在这里插入图片描述
【必须在第一次python manage.py makemigration前创建】
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

P44 8.02 文件上传

【缺少18:10前的】
在这里插入图片描述
#需手动添加才能生效?
在这里插入图片描述
法一
在这里插入图片描述

法二(避免重名问题)
在这里插入图片描述

先创建一个模板(建表)用来存储数据存储路径的信息。
创建一个upload_app应用,在其models中创建字段,如下:
在这里插入图片描述
修改前面的test_upload

def test_upload(request):
    if request.method == 'GET':
        return render(request,'test_upload.html')
    elif request.method == 'POST':
        #和HTML里的input的name有关
        #文本框直接用post方法
        title =  request.POST['title']
        #file的type所以用这个方法?
        myfile = request.FILES['myfile']
        Content.objects.create(title=title,picture=myfile)
        return HttpResponse('--上传文件成功--')

查看 http://127.0.0.1:8000/test_upload,上传文件(不能为空!!不然报错MultiValueDictKeyError),但由于没有csrf(具体还不是很理解)导致403
在这里插入图片描述
(1)在views中加装饰器?
(2)在HTML中加

{% crsf_token %}

在这里插入图片描述
查看图片
在这里插入图片描述

P45 8.03 django发送邮件

在这里插入图片描述
三个重要的协议
(1)发送邮件
在这里插入图片描述
(2)接收邮件,单向
在这里插入图片描述
(3)接收邮件,可实现仅获取摘要,双向操作
一旦启动会down所有邮件,所以稍慢
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
按照要求完成后可获得授权码,复制后在django中找个地暂存一下。

在这里插入图片描述
粘到settings里
在这里插入图片描述

#邮件相关配置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.qq.com'#不同邮箱,更改qq应该就可 SMTP服务器地址
EMAIL_PORT = 25 #SMTP服务的端口号
EMAIL_HOST_USER = '3xxxxx9@qq.com' #发送邮件的邮箱
EMAIL_HOST_PASSWORD = '' #授权码
#EMAIL_USE_TLS = False #与SMTP服务器通信时,是否启动TLS连接(安全链接),默认False,不然慢
#QQ邮箱不能设置这个?

在这里插入图片描述

到shell里测试
在这里插入图片描述

在这里插入图片描述
1)在middleware应用的mymiddleware.py中创建类ExceptionMW

class ExceptionMW(MiddlewareMixin):
    def process_exception(self,request,exception):
        print(exception)
        return HttpResponse('--对不起 当前网页有点忙')

2)在settings里注册

'middleware.mymiddleware.ExceptionMW',

在这里插入图片描述
3)创造一个错误来测试
在这里插入图片描述
在这里插入图片描述
但仅有一行简单的输出

在这里插入图片描述
在中间件中导入库,并打印追溯的错误

import traceback

print(traceback.format_exc())

刷新页面后将输出具体错误
在这里插入图片描述

在中间件类中添加以下内容,实现将报错内容发送给邮箱

from django.conf import settings
from django.core import mail

mail.send_mail(subject='djangoProject报错',message=traceback.format_exc(),
                       from_email='305650089@qq.com',recipient_list=settings.EX_EMAIL)

注意在settings里配置,便于重复利用?
在这里插入图片描述

项目部署1

##听不懂了orz,由于暂时不需要部署,故更新到此结束啦~
在这里插入图片描述
在这里插入图片描述

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 学习 Django 框架可以先了解 Python 编程语言,然后学习 Django 的基本概念和架构,掌握 Django 的模型、视图、模板等组件的使用方法,同时可以通过实践项目来深入理解 Django 的应用。可以参考 Django 官方文档、教程和相关书籍,也可以参加线上或线下的培训课程。 ### 回答2: 学习Django框架需要以下几个步骤。 首先,掌握Python语言的基本知识。Django是用Python编写的,因此在学习Django之前,需要对Python语言有一定的了解,包括基本的语法、数据类型和函数等。 其次,了解Django的基本概念和架构。Django是一个基于MVC模式的Web框架,理解其基本概念和架构可以帮助我们更好地使用和开发Django应用程序。 然后,阅读官方文档并进行实践。Django官方网站提供了详细的文档和教程,包括教程和指南,这些资源可以帮助我们理解和使用Django框架。通过按照教程步骤一步一步地实践,可以更好地掌握Django的使用。 此外,参与社区活动和交流也是学习Django的好方法。Django拥有活跃的社区,可以在社区论坛、邮件列表等平台与其他开发者交流和分享经验。 最后,通过实际项目的开发来深入学习和掌握Django。通过实践,可以更好地理解Django的各个功能和特性,并且在实际项目中解决实际问题。 总之,学习Django需要掌握Python语言基础,了解Django的基本概念和架构,阅读官方文档并进行实践,参与社区交流,以及通过实际项目来巩固学习。不断地学习和实践,可以逐步提高自己在Django框架下的开发能力。 ### 回答3: 学习Django框架可以按照以下步骤进行: 1. 学习Python:Django是使用Python编写的,所以首先要掌握Python基础知识,包括语法、数据类型、函数、模块等。 2. 学习Web开发基础知识:了解HTTP协议、HTML、CSS、JavaScript等前端基础知识,以及数据库操作等后端知识。 3. 学习Django官方文档:Django官方文档提供了详细的教程、示例和API文档,可以系统地学习框架的各个方面。 4. 进行实践项目:通过实际项目来应用所学的知识,可以做一个简单的博客、论坛或电商网站等,深入理解Django框架的使用方式和特性。 5. 参与社区和论坛:参与Django社区和相关论坛的讨论和交流,与其他开发者分享经验和解决问题,可以拓宽自己的视野和加深对Django的理解。 6. 阅读优秀的开源项目:阅读和分析一些优秀的开源项目,如Django的源码、Django REST framework等,可以学习到一些实践经验和优秀的编码风格。 7. 持学习和实践:Django框架不断更新迭代,持学习新的功能和特性,不断实践和尝试新的项目,保持对Django的研究和掌握。 总的来说,学习Django需要掌握Python基础、Web开发知识以及对Django官方文档的深入理解。通过实践项目、参与社区和论坛、阅读源码等方式可以不断提升自己的Django技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值