Django高级管理静态文件和中间件5.1

举报
Lansonli 发表于 2021/09/29 00:41:19 2021/09/29
【摘要】 管理静态文件 项目中的CSS、图片、js都是静态文件 配置静态文件 在settings 文件中定义静态内容 STATIC_URL = '/static/'STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'),] 在项目根目录下创建static目录,再创建当前应用名称的目录...

管理静态文件

  • 项目中的CSS、图片、js都是静态文件

配置静态文件

  • 在settings 文件中定义静态内容

  
  1. STATIC_URL = '/static/'
  2. STATICFILES_DIRS = [
  3. os.path.join(BASE_DIR, 'static'),
  4. ]
  • 在项目根目录下创建static目录,再创建当前应用名称的目录
mysite/static/myapp/

 
  • 在模板中可以使用硬编码
/static/my_app/myexample.jpg

 
  • 在模板中可以使用static编码

  
  1. { % load static from staticfiles %}
  2. <img src="{ % static "my_app/myexample.jpg" %}" alt="My image"/>

 

中间件

  • 是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出
  • 激活:添加到Django配置文件中的MIDDLEWARE_CLASSES元组中
  • 每个中间件组件是一个独立的Python类,可以定义下面方法中的一个或多个
    • _init _:无需任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件
    • process_request(request):执行视图之前被调用,在每个请求上调用,返回None或HttpResponse对象
    • process_view(request, view_func, view_args, view_kwargs):调用视图之前被调用,在每个请求上调用,返回None或HttpResponse对象
    • process_template_response(request, response):在视图刚好执行完毕之后被调用,在每个请求上调用,返回实现了render方法的响应对象
    • process_response(request, response):所有响应返回浏览器之前被调用,在每个请求上调用,返回HttpResponse对象
    • process_exception(request,response,exception):当视图抛出异常时调用,在每个请求上调用,返回一个HttpResponse对象
  • 使用中间件,可以干扰整个处理过程,每次请求中都会执行中间件的这个方法
  • 示例:自定义异常处理
  • 与settings.py同级目录下创建myexception.py文件,定义类MyException,实现process_exception方法

  
  1. from django.http import HttpResponse
  2. class MyException():
  3. def process_exception(request,response, exception):
  4. return HttpResponse(exception.message)
  • 将类MyException注册到settings.py中间件中

  
  1. MIDDLEWARE_CLASSES = (
  2. 'test1.myexception.MyException',
  3. ...
  4. )
  • 定义视图,并发生一个异常信息,则会运行自定义的异常处理

文章来源: lansonli.blog.csdn.net,作者:Lansonli,版权归原作者所有,如需转载,请联系作者。

原文链接:lansonli.blog.csdn.net/article/details/102616254

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。