一、静态文件
- 配置settings.py
STATIC_URL='/static/'STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'), ]
在html中顶部添加 {% load static %}
二、中间件
- 概述
中间件是用来处理Django的请求和响应的框架级别的钩子
本质:python类
在工程目录下middleware目录下创建应用目录
- 在middleware/elema中创建一个elemamiddleware.py
from django.utils.deprecation import MiddlewareMixin
class MyMiddle(MiddlewareMixin): # 在视图执行前调用
def process_request(self,reqeust): print('get请求,参数name: ', reqeust.GET.get('name'))
- 配置settings.py文件(即在MIDDLEWARE中添加上述文件的位置)
'middleware.elema.elemamiddleware.MyMiddle'
- 浏览器
http://127.0.0.1:8000/?name=zyz
- 效果 在终端中可以看到`get请求,参数name: zyz`
三、上传图片
- 注意
- 文件上传时,文件数据存储在request.FILES属性中
- form表单要上传文件需要加 enctype="multipart/form-data"
- 上传文件必须是post请求
- 上传文件的存储路径
- 在static目录下创建upfile目录用于存储接受上传的文件
- 配置settings.py文件
MDEIA_ROOT = os.path.join(BASE_DIR,'static/upfile')
- 表单
<form action="{% url 'elema:savefile' %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" value="上传文件" name="file">
<input type="submit" value="上传">
</form>
# 文件上传
def upfile(request):
return render(request, 'elema/upfile.html')
# 文件保存
import os
from django.conf import settings # 导入settings.py
def savefile(request):
# 判断是否为POST
if request.method == 'POST':
# 获取文件内容
file = request.FILES['file']
# 文件保存路径
filepath = os.path.join(settings.MDEIA_ROOT,file.name)
# 文件写入
with open(filepath,'wb') as fp:
for info in file.chunks():
fp.write(info)
return HttpResponse('文件上传成功')
else:
return HttpResponse('文件上传失败')
四、分页
- Paginator创建对象
Paginator( 列表,每页个数 )
paginator = Paginator( list(alllist),10 )
- Paginator属性
count:对象总数
num_pages:页面总数
page_range:页码列表(从1开始)
- Paginator方法
page(num) 获得一个page对象
- Page创建对象
Paginator对象的page()方法返回得到Page对象(不需要手动创建)
pageobj = paginator.page(page)
- Page方法
has_next(): 判断是否有下一页,如果有返回True
has_previous(): 判断是否有上一页,如果有返回True
has_other_pages(): 判断是否有上一页或下一页,如果有返回True
next_page_number(): 返回下一页的页码,如果下一页不存在抛出InvalidPage异常
previous_page_number(): 返回上一页的页码,如果上一页不存在抛出InvalidPage异常
len(): 返回当前页的数据(对象)个数
网友评论