学习Django(续)

本文介绍了Django中如何实现用户系统,包括仅存session的登录状态保持,登录状态校验及自动跳转。接着讲解了文件上传功能,通过创建模型存储文件路径并处理POST请求实现上传。同时,提到了CSRF问题及其解决方案。此外,还探讨了Django发送邮件的三个协议,并展示了配置SMTP发送邮件的过程。最后,学习了错误处理中间件,通过捕获异常并发送错误报告邮件提高项目稳定性。
摘要由CSDN通过智能技术生成

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,由于暂时不需要部署,故更新到此结束啦~
在这里插入图片描述
在这里插入图片描述

学习Django,一种流行的Python Web框架,你可以按照以下步骤进行: 1. **安装Python**[^4]: Django是基于Python的,所以首先确保你已经安装了Python(最新版本通常推荐)。 2. **了解基础Python**[^5]: 对Python语法有基本的理解至关重要,包括变量、数据类型、控制流、函数等。 3. **安装Django**[^6]: 使用pip(Python包管理器)安装Django,命令是`pip install django`。 4. **官方文档入门**[^7]: Django官方网站有详细的教程,从创建项目到运行开发服务器,都是很好的起点。 ```python # 创建一个新的Django项目 django-admin startproject mysite # 进入项目目录并启动开发服务器 cd mysite python manage.py runserver ``` 5. **理解Django架构**[^8]: 深入理解Django Model-View-Template (MVT)模式,这是其核心概念之一。 6. **模型与数据库操作**[^9]: 学习如何定义模型,与数据库交互,以及使用ORM(Object-Relational Mapping)。 7. **视图(Views)**[^10]: 视图是Django应用的核心逻辑部分,处理HTTP请求和响应。 8. **模板(Templates)**[^11]: 学习HTML模板的编写,以及如何嵌套和使用Django标签来动态渲染数据。 9. **URL路由(URL patterns)**[^12]: 了解如何配置URL以映射到不同的视图。 10. **中间件(Middleware)**[^13]: 理解如何扩展Django的行为,如身份验证和错误处理。 11. **实践项目**[^14]: 完成一个实际的Web应用程序,这将加深对Django工作原理的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值