Python学习day13 Django 分页/Session/Cookie

Created on 2017年5月3日

第1课:上节作业简介

鼠标放上表单后进入编辑模式-----需学习----CMDB里会学到
模态对话框里--弹出对话框---对后台进行操作---
方式:
1 Form-用Submit页面整个刷新
2 用Ajax后台请求,通过Sessuss方式返回数据来控制模态对话框

第2课:本节内容1
第3课:本节内容2

第4课:django自定义分页一 28minutes
第5课:django自定义分页二 35minutes

url(r‘^index/(\d*)‘, views.index),
index/(\d*) 这里后面不加/可以没有参数

后台返回给前端的HTML,在前端是以字符串方式来显示,不会直接以HTML在页面上显示
from django.utils.safestring import mark_safe
可通过mark_safe(‘html标签‘)
divmod(12,5)

def index(request,page):
try:
page = int(page)
except:
page = 1
per_item = 5
start = (page-1)*per_item
end = page*per_item
count = Asset.objects.all().count()
result = Asset.objects.all()[start:end]

temp = divmod(count, per_item)
if temp[1] == 0 :
all_page_count = temp[0]
else:
all_page_count = temp[0]+1
page_html = "<a href=‘/app01/index/%d‘>首页</a>"%(1)
for i in range(1,all_page_count+1):
a_html ="<a href=‘/app01/index/%d‘>%d</a>"%(i,i)
page_html += a_html

page_html += "<a href=‘/app01/index/%d‘>尾页</a>"%(all_page_count)
page = mark_safe(page_html)

ret = {‘data‘:result,‘count‘:count,‘page‘:page}
return render_to_response(‘app01/index.html‘, ret)

第6课:django自定义分页三 35minutes

第7课 Django自定义分布四 40minutes

完好的html分页代码:
# -*- coding: utf-8 -*-

from django.utils.safestring import mark_safe
‘‘‘
Created on 2017年5月4日
这是一个分页的模块,可以对所有的数据进行分页
@author: Administrator
‘‘‘
#这里需要提供:当前页面,每页数量,显示的Models
def model(page,per_item,M):
try:
page = int(page)
except:
page = 1
start = (page-1)*per_item
end = page*per_item
count = M.objects.all().count()
result = M.objects.all()[start:end]
temp = divmod(count, per_item)
if temp[1] == 0 :
all_page_count = temp[0]
else:
all_page_count = temp[0]+1
return all_page_count,result,count

#这里需要提供:当前页面,总页数,转向的URL
def pager(page,all_page_count,url):
try:
page = int(page)
except:
page = 1
#判断如果页面是1,则上一页无,正常上一页为当前少1
if page <= 1:
page_html = "<a href=‘#‘>上一页</a>"
else:
page_html = "<a href=‘%s/%d‘>上一页</a>"%(url,page-1)
#首页就是第1页
page_html += "<a href=‘%s/%d‘>首页</a>"%(url,1)

#页面显示11个页码,如果当前页面少于5,则启始页为1,正常启始页为当前减5
if page-5 <=0:
page_start = 1
page_end = 12
else:
page_start = page-5
if all_page_count-6>=page:
page_end = page+6
else:
page_end = all_page_count

for i in range(page_start,page_end+1):
if page == i:
a_html ="<a class=‘selected‘ href=‘%s/%d‘>%d</a>"%(url,i,i)
else:
a_html ="<a href=‘%s/%d‘>%d</a>"%(url,i,i)
page_html += a_html

page_html += "<a href=‘%s/%d‘>尾页</a>"%(url,all_page_count)
#
if page < all_page_count:
page_html += "<a href=‘%s/%d‘>下一页</a>"%(url,page+1)
else:
page_html += "<a href=‘#‘>下一页</a>"
page = mark_safe(page_html)
return page

第8课 Session剖析和应用 45minutes
Cookie
存在客户端的浏览器上

Session
存在服务器上,保持会话(如登录后操作其他页面)

-----------------------sesson-----------------------------------------
def index(request):
#这里判断是否有Request.sesson值,有就返回正常页面,无则返回登录页面
user_dict = request.session.get(‘is_login‘,None)
if user_dict:
return render_to_response(‘app02/index.html‘,{‘user‘:user_dict[‘user‘]})
else:
return redirect(‘/app02/login‘)

def login(request):
ret = {‘status‘:None}
if request.method == ‘POST‘:
username = request.POST.get(‘username‘,None)
password = request.POST.get(‘password‘,None)
print username,password
if username == ‘aaa‘ and password == ‘111111‘:
#这里给Session设定一个值,如果正常登录,则为Ture
# request.session[‘is_login‘] = True
request.session[‘is_login‘] = {‘user‘:username}
ret[‘status‘] = ‘登录成功‘
return redirect(‘/app02/index‘)
else:
ret[‘status‘] = ‘用户名或密码错误‘
return render_to_response(‘app02/login.html‘,ret)

def logout(request):
#删除sesson里的值,用del就可以了
del request.session[‘is_login‘]
return redirect(‘/app02/index‘)

---------------------------------------------------------------------

request.session 这个信息所有方法都可以使用

request.session[‘is_login‘] = {‘user‘:username}

第9课 Django中Session的运行机制 28minutes

session相关参数在Setting中设定

如果用户端浏览器中Cookie禁用了,网站无法在本地写入相关数据,则无法登录网站

cookiet 和 session的关系:
每个用户登录后会产生一个Cookie,用户 访问网站时,带着这个Cookie的值,网站会保留一个
Session的的Key(Cookie的值),来确认是否为该用户。
多个用户多个Key

第9课 Django的剖析和应用 33minutes

给页面手工设置Cookie
response = render_to_response(‘app02/login.html‘,ret)
response.set_cookie(‘k1‘, ‘v1‘)

jquery.cookie.js有Jquery的Cookie操作

时间: 2024-10-13 23:12:14

Python学习day13 Django 分页/Session/Cookie的相关文章

VS2013中Python学习笔记[Django Web的第一个网页]

前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环境的搭建过程,以及Hello World的实现. 第二篇 VS2013中Python学习笔记[基础入门] 我简单学习使用了Python的几个基础的知识点. 第一个Web页面 第一步:首先打开VS2013开发工具 ,新建项目,选择Django Project模版. 修改项目名称,可以查看到项目的文件结

Python学习(三) Django框架简单搭建

为了快速学习Python进行Web的开发,所以我不准备从Python的基础学起,直接从Django框架入手,边学框架边学Python的基础知识. 下面就开始Django的快速开发之旅吧. 关于Django框架1.8的英文文档在其官网上都有,地址 https://docs.djangoproject.com/en/1.8/intro/ Python的开发手册地址:https://pythonspot.com/getting-started/ https://docs.djangoproject.c

【python学习】django安装,第一个应用

1.django安装 python 2.6 要使用 Django-1.4.5.tar.gz [[email protected] yum.repos.d]# pip install Django==1.4.5 Downloading/unpacking Django==1.4.5   Downloading Django-1.4.5.tar.gz (7.7MB): 7.7MB downloaded   Running setup.py (path:/tmp/pip_build_root/Djan

python学习随笔--django 上

Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 基本配置 一.创建django程序 终端命令:django-admin startproject sitename IDE创建Django程序时,本质上都是自动执行上述命令 其他常用命令: python manage.py runserver 0.0.0.0 python manage.py st

django 学习-17 Django会话Session

session   类似于字典的一个对象,是可读可写的 跟cookie的变化不大而且还显得简单 在这里我只说一下改变的地方 1.vim blog/views.py if uf.is_valid():                        username = uf.cleaned_data['username']                        password = uf.cleaned_data['password']                        use

Python学习(二) Django安装配置

上一节介绍了如何搭建Python的开发环境,这次介绍一下如何搭建Django的开发环境. 第一.下载Django Django跟Python的版本对应 Django version Python versions 1.4 2.5, 2.6, 2.7 1.7, 1.8 2.7 and 3.2, 3.3, 3.4 1.9 2.7, 3.3, 3.4, 3.5 这里我选择的是1.8.2,下载地址:https://www.djangoproject.com/download/ 第二.安装Django 下

python学习笔记--Django入门四 管理站点

上一节  Django入门三 Django 与数据库的交互:数据建模 "管理员界面"是基础功能中的重要部分.. 激活管理员界面 管理界面是 Django 中最酷的一部分.但是不是所有人都需要它,所以它是可选的.这也就意味着你需要跟着三个步骤来激活它. 在你的 models 中加入admin metadata. 不是所有的models都能够(或应该)被管理员编辑,你需要给models标记一个管理员接口(interface),通过给models添加一个内部类'admin'完成接口标记.所以

Python学习-day13 SqlAlchemy

本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业 1. ORM介绍 orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却都是关系型的,为了保证一致的使用习惯,通过orm将编程语言的对象模型和数据库的关系模型建立映射关系,这样我们在使用编程语言对数据库进行操作的时候可以直接使用编程语言的对象模型进行操作就可以了,

Python学习之——Django项目--后台管理

1.在终端创建用户,如图: 2.修改为中文显示 3.启动服务 (venv) C:\Software\pycharm\workspace\studyDjango>python manage.py runserver 44444 Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). May 25, 2019 - 10