Django学习总结

这篇博客总结了Django中处理静态文件的方法,包括创建文件夹、配置路径和模板调用。还介绍了中间件的工作原理、创建与配置,并讨论了文件上传和分页功能的实现。同时提到了富文本编辑器的使用和Celery异步任务发送邮件的配置流程。

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

什么是静态文件?

像 图片 css js json 字体都是静态文件
1,先创建文件夹
在这里插入图片描述
2,配置路径
在这里插入图片描述
3,在模板文件里面调用
在这里插入图片描述
上面写的路径是写死的,如果静态文件夹名发生改变,就会找不到静态文件,如果写一个无论静态文件夹名如何变,都不影响找到这些文件夹的路径引用呢?
在这里插入图片描述
然后在模板文件中,使用以下方式
在这里插入图片描述
在这里插入图片描述
中间件:就是一个python类,可以介入django的请求和恢复
既然是类,就有方法,中间件是类,有五个方法
在这里插入图片描述
为什么使用中间件?判断是否一个客户在攻击服务器,在url匹配之前,判断是不是客户再不断的发送请求,如果是经常发送,就在url匹配之前把他封掉
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如何使用中间件?

1.创建中间件目录
在这里插入图片描述
2,定义中间件类
在这里插入图片描述
3,定义好中间件,django如何知道在url匹配前,先调用它呢,所以先配置一下
在这里插入图片描述

上传图片或者文件

1,浏览器端上传文件或者图片时候,这些文件数据就存储在,request.FILES当中,我们在服务器端可以通过这个来获得

2,上传服务器得到的图片和文件,一般属于静态文件,所以一般放在根目录下面的静态文件夹下,单独建一个上传文件夹
在这里插入图片描述
3,配置上传文件的目录,容易查找
在这里插入图片描述
4,提交文件模板写法和需要注意的
在这里插入图片描述
5,然后是文件发送给服务器端,视图函数如何保存?
在这里插入图片描述

分页效果
django已经写好了分页
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下图是page对象里面的属性和方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实现学生分页列表
在这里插入图片描述
在这里插入图片描述
视图函数,返回的是某一个页码的page对象
在这里插入图片描述
如果是当前页,让下面的当前页码不能点击的实现方法
在这里插入图片描述
ajax和django之间的交互
ajax是实现浏览器端页码局部更新数据的技术,可以借用jq的ajax进行json数据的传送

1,模板前端,使用JS获得后端的data的json数据
在这里插入图片描述
2,django端匹配上面jq查找的路由
在这里插入图片描述
在这里插入图片描述
在模板端接受视图函数发来的data的json字符串
在这里插入图片描述

富文本(其实就是发文章时候,那一套编辑器)
1,首先需要安装这个包
在这里插入图片描述
富文本的样式如下
在这里插入图片描述
富文本主要用在 站点中 和 视图函数中

1.在站点中使用富文本,如下
一.配置文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后重新执行迁移
在这里插入图片描述
迁移以后,定义的富文本模型类就可以在数据库中生成对应的表,要想在管理站点中看到这个表,就需要注册一下
在这里插入图片描述
在这里插入图片描述
在站点里使用富文本的不多,主要用在视图函数中(也就是在前端页面里面使用富文本)
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

celery
当我们注册内容时候,注册成功的同时,还会给你邮箱发一个确认的邮件,如果是直接返回,发送邮件的程序会很慢,你会等很久,所以,我们使用celery来解决,让它来发送邮件,而我们浏览器不需要等待
在这里插入图片描述
使用celery 需要先安装上面几个模块

然后进行配置
在这里插入图片描述
然后在setting文件里面的最下面添加以下代码
在这里插入图片描述
然后在建的应用里面创建task.py文件
在这里插入图片描述
迁移,生成celery需要的mysql数据库表(直接迁移,不用生成迁移)
在这里插入图片描述
在mysql数据库里面就可以看到生成的celery表
在这里插入图片描述
在project下新建 一个celery.py文件,内容写死

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery, platforms

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'website.settings')

app = Celery('website')

# Using a string here means the worker don't have to serialize
# the configuration object to child processes.
# - namespace='CELERY' means all celery-related configuration keys
#   should have a `CELERY_` prefix.
app.config_from_object('django.conf:settings', namespace='CELERY')

# Load task modules from all registered Django app configs.
app.autodiscover_tasks()

# 允许root 用户运行celery
platforms.C_FORCE_ROOT = True

@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))

在这里插入图片描述
然后在__init__.py文件里面写入以下代码
在这里插入图片描述

from __future__ import absolute_import

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from .celery import app as celery_app

__all__ = ['celery_app']

6.各应用创建tasks.py文件,这里为deploy/tasks.py

from __future__ import absolute_import
from celery import shared_task

@shared_task
def add(x, y):
    return x + y

注意tasks.py必须建在各app的根目录下,且只能叫tasks.py,不能随意命名

  1. views.py中引用使用这个tasks异步处理

    from deploy.tasks import add

    def post(request):
    result = add.delay(2, 3)

待续未完!!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值