"""
django 高级扩展一、静态文件
1.css,js,json,图片,字体等
2.配置setting,在最底下设置静态文件目录,写入下面代码
#配置静态文件目录
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')
]
3.在html中的调用方式
首在html开头先写:{% load static from staticfiles %}  #如果STATIC_URL 改变html不用一个一个去改路径
举例
{% load static from staticfiles %}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>{# 这个是css调用 #}<link rel="stylesheet" type="text/css" href="{% static 'users/css/style.css' %}>{# 这个是js调用 #}{#  <script type="text/javascript" src="/static/users/js/jquery-3.1.1.min.js"></script>#}<script type="text/javascript" src="/static/users/js/suck.js"></script>
</head>
<body>
<h1>高级扩展程序</h1>
<img src="/static/users/img/ceshi.jpg" />
<hr>
{#此种方式调用是配合开头,以防STATIC_URL路径变了#}
<img src="{% static 'users/img/ceshi.jpg' %}" />
</body>
</html>二、中间件
概述:一个轻量级,底层的插件,可以介入django的请求与响应
本质:一个python类
路径:在setting中的MIDDLEWARE = 里进行配置
方法:
1.__int__
不需要传参数,服务器响应第一个请求的时候自动调用,用于确定是否启用该中间件
2.process_request(self,request)
在执行视图之前被调用(分配url,匹配视图之前),每个请求上都会被调用,返回None或者HttpResponse对象
3.process_view(self,request,view_func,view_args,view_kwargs)
调用视图之前执行,每个请求上都会被调用,返回None或者HttpResponse对象
4.process_template_response(self,request,response)
在视图刚好执行完后被调用,每个请求上都会被调用,返回None或者HttpResponse对象
接下来再使用render
5.process_response(self,request,response)
所有响应返回浏览器之前调用,每个请求上都会被调用,返回HttpResponse对象
6.process_exception(self,request,exception)
当视图抛出异常时调用,返回HttpResponse对象三、自定义中间件
1.工程的目录先创建middleware目录,在里面创建users目录
2.创建一个python文件
3.举例
from django.utils.deprecation import MiddlewareMixin
class myMiddl(MiddlewareMixin):def process_request(self,request):print("get参数为:",request.GET.get('a'))四、使用自定义的中间件
1.配置setting文件,在MIDDLEWARE中添加 'middleware.users.myMiddl.myMiddl',
格式:app名.Py的文件名.py文件里的函数名五、上传图片
概述:文件上传的时候,文件数据存储在request.FILES属性中
注意:上传文件必须是post请求
注意:在html中的form表单上传文件需要加enctype="multipart/form-data",否则上传不上去
例:<form method="post" action="/savefile/" enctype="multipart/form-data"><input type="file" name="file"><input type="submit" value="上传"></form>
存储路径:在static目录下创建upfile目录用于存储上传的文件
配置setting文件:
# 上传文件目录(注意在'static\upfile'中liux用/此斜杠,windwos用\反斜杠)
MDEIA_ROOT=os.path.join(BASE_DIR,r'static\upfile')代码示例
HTML的示例
<body><form method="post" action="/savefile/" enctype="multipart/form-data">{% csrf_token %}<input type="file" name="file"><input type="submit" value="上传"></form>
</body>
VIEWS的示例
def upfile(request):return render(request,'users/upfile.html')
import os
from django.conf import settings
def savefile(request):if request.method == 'POST':f = request.FILES['file']#合成文件在服务器端路径filePath = os.path.join(settings.MDEIA_ROOT,f.name)with open(filePath,'wb') as fp:for info in f.chunks():fp.write(info)return HttpResponse('ok')else:return HttpResponse('上传失败')六、分页
1.Paginator对象
创建对象:
格式 Paginator(列表,整数)
返回值 返回分页对像
属性:
count 对象总数
num_pages 页面总数
page_range 页码列表  [1,2,3,4,5]  页码从1开始
方法:
page(num)  获得一个page对象,如果提供的页码不存在会抛出'invalidpage'
异常:
一、invalidpage 当向page()传递的是一个无效的页码时输出
二、PageNotAnInteger  当向page()传递的不是一个整数时输出
三、EmptyPage  当向page()传递一个有效值,但是该页面时没有数据输出2.Page对象
创建对象:Paginator对象的page()方法返回得到page对象,不需要手动创建
属性:
object_list 当前页面上所有数据对象列表
number  当前页的页码值
paginator 当前page对象关联的paginator对象方法:
has_next() 判断是否有下一页,如果有返回True
has_previous() 判断是否有上一页,如果有返回True
has_other_pages() 判断是否有上一页或下一页,如果有返回True
next_page_number()  返回下一页的页码,如果下一页不存在,抛出invalidpage异常
previous_page_number() 返回上一页的页码,如果下一页不存在,抛出invalidpage异常
len()  返回当前页的数据(对象)个数Paginator对象与Page对象
代码示例:
1.配置urlurl(r'^studentpage/(\d+)/$',views.studentpage),
2.配置view
from .models import Students
from django.core.paginator import Paginator
def studentpage(request,pageid):alllist=Students.objects.all()#这个是每页分成3个paginator = Paginator(alllist,3)#这个是每次拿1页pagelist = paginator.page(pageid)return render(request,'users/studentpage.html',{'students':pagelist})
3.配置html
<body><ul>{% for stu in students %}<li>{{ stu.sname }}--{{ stu.sgrade }}</li>{% endfor %}</ul><ul>{% for index in students.paginator.page_range %}{#这边是判断当前页码是否相等,如果相等就不能点击自己的当前#}{% if index == students.number %}<li>{{ index }}</li>{% else %}<li><a href="/studentpage/{{ index }}/">{{ index }}</a></li>{% endif %}{% endfor %}</ul>
</body>七、ajax 需要动态生成,请求json数据八、富文本
安装
pip install django-tinymce
在站中使用(注意:要确定主url中是否开启:    path('admin/', admin.site.urls), 否则无法建超级管理员
1.配置setting文件INSTALLED_APPS里添加 'tinymce'
2.并在setting文件最底下添加如下:
#富文本
TINYMCE_DEFAULT_CONFIG = {'theme':'advanced','width':600,'height':400,
}
3.在models创建一个模型类,并进行牵移,python manage.py makemigrations 和 python manage.py migrate
from tinymce.models import HTMLField
class Text(models.Model):str = HTMLField()
4.在工程里的admin.py中配置站点:
from .models import Text
admin.site.register(Text)
5.创建超级管理员并设置账号和密码
python manage.py createsuperuser
6.登陆并点击text就可以进行编辑
http://127.0.0.1:8000/admin在定义视图中使用
示例:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>富文本</title>{# 不管路径有没有,直接按下写,引入 #}<script type="text/javascript" src="/static/tiny_mce/tiny_mce.js"></script><script type="text/javascript">tinyMCE.init({'mode':'textareas','theme':'advanced','width':800,'height':600,})</script>
</head>
<body><form action="/editsave/" method="post"><textarea name="str">suck is good man</textarea><input type="submit" value="提交"></form>
</body>
</html>celery
文档网址:http://docs.jinkan.org/docs/celery/
1.用户发起request,并且要等待response返回,但是在视图中有一些耗时的操作,导致用户可能会很久才接收到response,
2.网站每一段时间要同步一次数据,但是html请求是需要触发,
解决:
1.celery来解决,将耗时的操作放到celery中执行
2.使用celery定时来执行celery
任务:task 本质是一个python函数,将耗时操作封闭成一个函数
队列:queue 将要执行的任务放队列里
工人:worker 负责执行对列中的任务
代理:broker 负责调度,在部署环境中使用redis
安装:一共安装三个
pip install celery
pip install celery-with-redis
pip install django-celery
配置setting
1.在INSTALLED_APPS添加    'djcelery',
并在setting最底下创建如下:
#celery
import djcelery
djcelery.setup_loader() #初始化队列
BROKER_URL='redis://weilai@127.0.0.1:6379/0'
CELERY_IMPORTS = ('users.task')2.在应用的(users)目录下创建task文件
3.迁移(执行python manage.py migrate,不需要生成迁移文件,直接执行此句)生成celery需要的数据库
4.在工程目录下的xinqidain里创建celery.py,并放下下面代码:
from __future__ import absolute_import
import os
from celery import Celery
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE','whthas_home.settings')
app = Celery('portal')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda:settings.INSTALLED_APPS)@app.task(bind=True)
def debug_task(self):print('Request:{0!r}'.format(self.request))
5.在工程目录下的xinqidain的目录的__inin__.py添加以下句子
from .celery import app as celery_app"""

  

转载于:https://www.cnblogs.com/weilaibuxiangshuo/p/10388644.html

django 高级扩展-中间件-上传图片-分页-富文本-celery相关推荐

  1. ios html富文本分页,富文本框与分页

    1.富文本框javascript UEditor, CKEditor,wangEditor 市面用得比较多的富文本框html 使用是的wangEditor,要学习的话能够去看它的官网 -> ht ...

  2. springboot中kindeditor 上传图片及其富文本的使用

    话不多少,直接进入话题. 首先需要在前端页面中引入kindeditor 库 <script src="../js/kindeditor-all.js"></scr ...

  3. Django中扩展Paginator实现分页

    Django中已经实现了很多功能,基本上只要我们需要的功能,都能够找到相应的包.要在Django中实现分页显示,只需要简单地使用Paginator就可以实现了. 首先,需要在应用的views.py中添 ...

  4. django - 替换admin的textarea为 富文本

    1. 安装这个:https://github.com/pydanny/django-wysiwyg 2. 下载你希望的 编辑器,到你的指定路径STATIC_ROOT [详细后面补充] 转载于:http ...

  5. 【Django 027】tinymce富文本框使用详解

    针对博客和论坛类网站,用户需要在网页的富文本框中输入内容传递到后端.那么Django项目如何生成一个包含富文本框的页码,又如何获取用户上传的富文本内容呢?这一节我们就一起来看看. 我是T型人小付,一位 ...

  6. 若依前后端分离发布富文本框内容 | uni-app微信小程序展示富文本框内容

    微信小程序端引入富文本样式 富文本提交图片json error 一.展示示例: 1.PC端前端发布界面 可以设置文字大小,居中,可以插入图片,设置图片大小,居中. 2.小程序端展示 二.基于若依框架踩 ...

  7. android 富文本框架_当微擎框架遇上uniapp,以一当十同时开发十个平台项目

    随着各类平台异军突起,流量也越来越分散.为了适应时代的发展,不少公司在做产品项目的时候,需要例如网站.公众号.H5.微信小程序.抖音小程序.支付宝小程序.百度小程序.360小程序.快应用.安卓app. ...

  8. 前端Quill实现富文本编辑器

    目录 前言 Quill 介绍 Quill 简单实现 效果 前言 网页上经常会需要用户输入一些文本或者代码块,所以需要富文本编辑器来支持.常见的富文本编辑器有Quill.Draft.js.TinyMCE ...

  9. vue富文本框(插入文本、图片、视频)的使用

    今天在vue里面插入富文本遇到了一些小坑在这里提供给大家用于参考,如有错误,望多加指正. 我这里使用的是Element-ui的上传图片组件 首先引入Element-ui(这个我就不作赘述了,详情参考e ...

最新文章

  1. 一个小型网站多少台服务器,小型企业局域网需要服务器的价格在多少左右(40台机器)...
  2. vi/vim粘贴代码自动缩进导致全乱了
  3. 阿里云安装mysql5.6_yum安装mysql 5.6-阿里云开发者社区
  4. 阿里云发布云原生加速器,携手生态企业拥抱数字时代
  5. 给自己的Unity添加声音文件
  6. TeamCola - 最好用的团队工作日志软件
  7. python 根据网址获取股票
  8. gitee创建ssh公钥
  9. 推荐一个PPT副业,日赚800-1000元
  10. 国内浏览器双核模式 默认切换chrome内核
  11. 电子电路工程师常用模拟电路整理(20个)!
  12. C语言如何写循环队列,C语言 队列(循环队列)
  13. Verilog实现38译码器
  14. Redis5.0集群搭建(三主三从)、添加一主一从、JedisCluster连接集群
  15. FatSecret Platform API
  16. Nordic nRF52840实战学习--ble_app_blinky例程
  17. CentOS 7.2 安装Subversion(SVN)
  18. Python实现数字图像处理之5种彩色空间转换(单图+多图+视频)
  19. 7 openVINO 反光背心和安全帽检测
  20. Lake Shore—CRX-EM-HF 型低温探针台

热门文章

  1. 计算机技术在塑料模具中的应用,浅谈CAD/CAE技术在塑料模具中的应用
  2. 三星显示器服务器,顶级显示器中等价为三星2213LN
  3. win7/10 成功安装sql sevser 2000的方法
  4. 塔望消费战略:消费时代,食品企业的本质性核心战略
  5. mycat读写分离实验
  6. linux cut -b用法,Linux cut 命令详解
  7. 带你了解食品WMS仓储系统的价值
  8. 关于致富的35条建议
  9. 2018年度南京海外留学人员创业大赛 美国赛区 决赛
  10. Pcdmis海克斯康三坐标脱机软件2013至2021 CAD++全功能