Django学习总结

什么是静态文件?

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

1.创建中间件目录
Django学习总结_第11张图片
2,定义中间件类
Django学习总结_第12张图片
3,定义好中间件,django如何知道在url匹配前,先调用它呢,所以先配置一下
Django学习总结_第13张图片

上传图片或者文件

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

2,上传服务器得到的图片和文件,一般属于静态文件,所以一般放在根目录下面的静态文件夹下,单独建一个上传文件夹
Django学习总结_第14张图片
3,配置上传文件的目录,容易查找
Django学习总结_第15张图片
4,提交文件模板写法和需要注意的
Django学习总结_第16张图片
5,然后是文件发送给服务器端,视图函数如何保存?
Django学习总结_第17张图片

分页效果
django已经写好了分页
Django学习总结_第18张图片
在这里插入图片描述
Django学习总结_第19张图片
Django学习总结_第20张图片
下图是page对象里面的属性和方法
Django学习总结_第21张图片
Django学习总结_第22张图片
在这里插入图片描述

实现学生分页列表
Django学习总结_第23张图片
Django学习总结_第24张图片
视图函数,返回的是某一个页码的page对象
Django学习总结_第25张图片
如果是当前页,让下面的当前页码不能点击的实现方法
Django学习总结_第26张图片
ajax和django之间的交互
ajax是实现浏览器端页码局部更新数据的技术,可以借用jq的ajax进行json数据的传送

1,模板前端,使用JS获得后端的data的json数据
Django学习总结_第27张图片
2,django端匹配上面jq查找的路由
Django学习总结_第28张图片
Django学习总结_第29张图片
在模板端接受视图函数发来的data的json字符串
Django学习总结_第30张图片

富文本(其实就是发文章时候,那一套编辑器)
1,首先需要安装这个包
Django学习总结_第31张图片
富文本的样式如下
Django学习总结_第32张图片
富文本主要用在 站点中 和 视图函数中

1.在站点中使用富文本,如下
一.配置文件
Django学习总结_第33张图片
Django学习总结_第34张图片
Django学习总结_第35张图片
然后重新执行迁移
Django学习总结_第36张图片
迁移以后,定义的富文本模型类就可以在数据库中生成对应的表,要想在管理站点中看到这个表,就需要注册一下
Django学习总结_第37张图片
Django学习总结_第38张图片
在站点里使用富文本的不多,主要用在视图函数中(也就是在前端页面里面使用富文本)
Django学习总结_第39张图片
Django学习总结_第40张图片

Django学习总结_第41张图片

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

然后进行配置
Django学习总结_第43张图片
然后在setting文件里面的最下面添加以下代码
Django学习总结_第44张图片
然后在建的应用里面创建task.py文件
Django学习总结_第45张图片
迁移,生成celery需要的mysql数据库表(直接迁移,不用生成迁移)
Django学习总结_第46张图片
在mysql数据库里面就可以看到生成的celery表
Django学习总结_第47张图片
在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))

Django学习总结_第48张图片
然后在__init__.py文件里面写入以下代码
Django学习总结_第49张图片

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)

待续未完!!!!

你可能感兴趣的:(python)