• 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操作

    Cook顺序:
    index -----客户端$(function())-----下拉框选择-----刷新---返回Index

    ------------------------------------------------------------------------------------
    def user1(request,page):
    print request.COOKIES
    #后台显示cookies,是一个字典,可以用Key的方式得到Value
    per_item = int(request.COOKIES.get('pager_num',10))
    print per_item

    第9课 Django的剖析和应用 33minutes
    all_page_count,result,count = model(page,per_item,UserInfo)

    page = pager(page,all_page_count,'/app01/user1')

    ret = {'data':result,'count':count,'page':page}

    #return render_to_response('app01/accountinfo.html',ret)

    response = render_to_response('app01/accountinfo.html',ret)
    #可以对返回页面的对象设置Cookie
    response.set_cookie('pager_num', per_item)
    return response


    <script src="/static/jquery/jquery-1.12.4.js" type="text/javascript"></script>
    <script src="/static/jquery/jquery.cookie.js" type="text/javascript"></script>
    <script type='text/javascript'>
    //var temp =$('#id1').html()
    //console.log(temp)
    //这里先获取浏览器的Cookie,如果有值,将下拉框的附值
    /* */
    $(function(){
    var per_item = $.cookie('pager_num');
    if(per_iterm){
    $('#id2').val(value)
    }
    })


    function ChangePageItem(arg){
    //这里arg就是上面this下的值
    var value=$(arg).val();
    console.log(value)
    //创建或修改Cookie值
    //设置一个Key为Pager_num和值,path设置的目录,根目录为所有目录使用
    $.cookie('pager_num',value,{path:'/'});
    //$('#id2').val(value)
    }
    ------------------------------------------------------------------------------------

    第10课  Cookie剖析和Cookie的应用

    第11课  Django中Cookie的应用

    第12课  Django跨站请求伪造一

    第13课  Django跨站请求伪造二

    第14课  Django中间件的原理和应用一

    第15课  Django中间件的原理和应用二

      Django Admin说明

    第16课 作业

    完善主机管理系统:

    登陆注册(利用ajax实现,使用onblur事件,检测当前用户名是否已经存在)
    用户会话保持(Session)
    Form验证用户输入
    自定义中间件记录请求IP(或黑名单)
    用户管理、用户组管理、主机管理(增删改查,分页)
    自定义页面表格行数(可选)

    通过Cookie更改背景颜色,以主题方式操作

  • 相关阅读:
    PCA
    Less
    Node.js的运行
    跨域
    Jquery中的Ajax
    JSON
    Ajax应用查询员工信息
    xampp中localhost与DreamWaver站点设置问题
    PHP
    HTTP是什么
  • 原文地址:https://www.cnblogs.com/syother/p/6817842.html
Copyright © 2020-2023  润新知