什么是静态文件?
像 图片 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))
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
,不能随意命名
views.py
中引用使用这个tasks异步处理
from deploy.tasks import add
def post(request):
result = add.delay(2, 3)
待续未完!!!!