day7-分页、上传图片、session登录、csrf校检

一、实现分页功能

1、使用切片实现分页
#在网页上得到page
  page_number = int(request.GET.get('page',1))
#得到分页过后的数据条数
  users = Users.objects.all()[3*(page_number-1):3*page_number]
2、使用Paginator
#在网页上得到page
page_number = int(request.GET.get('page',1))
#得到Users中所有的用户数据
users = Users.objects.all()
#使用Paginator实现分页
#使用Paginator实现按照三条数据分页
paginator = Paginator(users,5)
#获取某一个的信息
page = paginator.page(page_number)

当前页,页码,上一页,下一页设置

    

当前页:{{ page.number }}

页码:{% for i in page.paginator.page_range %} {{ i }} {% endfor %}

{% if page.has_previous %} 上一页 {% endif %} {% if page.has_next %} 下一页 {% endif %}

二、上传图片

安装Pillow处理图片
在模型中定义icon,upload为图片上传后所在路径
创建文件夹media存放upload
在setting中配置media路径

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')

icon = models.ImageField(upload_to='upload',null=True,verbose_name='头像')

在注册页面写入

头像:

然后在form表单内写入enctype="multipart/form-data"才能提交图片
进行表单验证时,获取表单提交信息时要写入request.FILES即

form = Userform(request.POST,request.FILES)

创建保存用户时加入icon字段

icon=request.FILES.get('icon')

上传图片展示
在工程目录下的urls里面配置

urlpatterns += static(settings.MEDIA_URL,document_root = settings.MEDIA_ROOT)
在页面解析图片

三、cooike和session登录验证

设置session的值

request.session['user_id'] = user.id

实现注销功能
第一种,删除session和cookie

request.session.flush()

第二种,获取session_key的并实现删除,删除服务端

session_key = request.session.session_key
request.session.delete(session_key)

四、csrf校检
在表单提交里面写入

{% csrf_token %}

你可能感兴趣的:(day7-分页、上传图片、session登录、csrf校检)