学习Django(续)

学习Django(续),第1张

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,由于暂时不需要部署,故更新到此结束啦~

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/718714.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存