静态文件
在网页上使用的CSS JS IMAGES 文件都属于静态文件
在项目目录下 创建static文件夹 在文件夹内将CSS JS IMG 分类
配置项目管理目录下的setting.py文件
STATIC_URL = "访问静态文件的地址"
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")] # 设置静态文件的物理地址
STATIC_URL 是访问静态文件对应的url
STATICFILES_DIRS 是静态文件存放的物理目录地址
模板中动态生成静态文件url
首先导入
{% load staticfiles %}
在需要使用静态文件路径的地方输入
{% static %}
对应着settings中静态文件URL路径
{% static /images/mm.jpg %}
静态文件的加载顺序
静态文件的查找首先到 settings文件里配置的地址查找静态文件
再到 应用下的static 文件夹下查找静态文件
中间件
在执行视图函数前 先执行中间件函数
获取浏览器端的IP地址
使用request对象的META属性
META 属性是一个字典字典中的REMOTE_ADDR保存了客户端的IP地址
request.META["REMOTE_ADDR"] 取得客户端的IP地址
使用中间件
在应用下创建一个py文件
定义一个名字为process_view的函数
但是process_view 函数必须定义在一个类里面
当执行视图函数前就必然会先执行这个函数
class Middleware(object):
def process_view(self, request, view_func, *view_args, **view_kwargs)
process_view 函数的参数是固定的
中间件所在的类叫做中间件类
process_view 叫做中间件函数
必须在settings 中注册中间件类
在MIDDLEWARE_CLASSES中添加
"应用名.py文件名.中间件类名",
"book.middleware.Middleware",
在中间件类中
__init__(self)
: 服务器响应第一个请求的时候调用
process_request(self, request)
: 产生request对象, 进行url匹配之前调用
process_view(self, request, view_func, *args, **kwargs)
: url匹配之后, 调用视图函数之前
process_response(self, request, response)
: 视图函数return后,反回给浏览器之前会执行这个函数,内容会被保存在response参数内,所以这个函数必须return respons给浏览器
process_exception(self, request, exception)
: 视图函数出现异常,调用这个函数
如果某个中间件直接return了HTTP内容 那么将直接跳转到response中间件函数
如果注册的多个中间件类中包含process_exception函数 调用的顺序跟在settings中注册的顺序是相反
的