zoukankan      html  css  js  c++  java
  • django实战1使用视图和模板显示多行

    测试显示多行
    一、初步测试
    1、视图
    # vim mysite/views.py
    def more_lines(request):
    x=range(1,100)
    return render_to_response('more_lines.html',locals())
    2、模板
    # vim mysite/templates/more_lines.html
    {% extends "base.html" %}
    {% block title %}Test 100 lines{% endblock %}
    {% block content %}
    <table border="1">
    <tr>
    <td>line</td>
    </tr>
    <tr>
    <td>99999</td>
    </tr>
    </table>
    <table border="1">
    <tr>
    <td>line</td>
    </tr>
    {% for item in x %}
    <tr>
    <td>{{ item }}</td>
    </tr>
    {% endfor %}
    </table>
    {% endblock %}
    3、URL
    # vim mysite/urls.py
    from django.conf.urls import patterns, include, url
    from mysite.views import hello,current_datetime,hours_ahead,more_lines
    urlpatterns = patterns('',
    url(r'^lines/$',more_lines),
    }
    4、显示
    http://192.168.1.250:8000/lines/
    100行都全部显示了,控制一次显示10行
    5、总结
    控制显示多少行,不应该在模板里控制,而是应该在视图里控制
    二、改进
    如果想自己控制显示的行呢?
    如果想显示5-10,或者5-12行呢
    分析
    如果想自己控制显示的行,传入一个参数即可。
    如果要显示5-10,并且明确每页显示都是5行(可以用列表的步进),导入一个开始显示行的参数即可
    如果每页显示行数和从哪行显示都不确定,需要传入两个参数,一个开始,一个步进。

    假设一共有100行数据
    1、控制显示到多少行
    1)视图
    # vim mysite/views.py
    def more_lines(request,sclice):
    x=range(1,100)
    try:
    sclice=int(sclice)
    except ValueError:
    raise Http404()
    else:
    x=x[:sclice]
    return render_to_response('more_lines.html',locals())
    2)、URL
    from django.conf.urls import patterns, include, url
    from mysite.views import hello,current_datetime,hours_ahead,more_lines
    urlpatterns = patterns('',
    url(r'^lines/(\d{1,2})/$',more_lines),#只有100行,最多让显示99行了
    }
    3)访问测试
    http://192.168.1.250:8000/lines/18/

    2、每页显示10行,传入开始显示的行
    # vim mysite/views.py
    def more_lines(request,start):
    x=range(1,100)
    try:
    start=int(start)
    except ValueError:
    raise Http404()
    else:
    x=x[start:start+10]
    return render_to_response('more_lines.html',locals())
    访问测试
    http://192.168.1.250:8000/lines/19/
    3、如果每页显示行数和从哪行显示都不确定,需要传入两个参数,一个开始,一个步进。这里还是用位置参数,应该可以用关键词参数,目前还不会
    # vim mysite/views.py
    def more_lines(request,start,step):
    x=range(1,100)
    try:
    start=int(start)
    step=int(step)
    except ValueError:
    raise Http404()
    else:
    x=x[start:start+step]
    return render_to_response('more_lines.html',locals())
    URL
    url(r'^lines/(\d{1,2})/(\d)/$',more_lines),
    控制步进在10内
    http://192.168.1.250:8000/lines/80/9/

  • 相关阅读:
    偶数求和
    POJ2002Squares
    学习笔记之ulimit
    LeetCode 345. Reverse Vowels of a String
    LeetCode 343. Integer Break
    LeetCode 292. Nim Game
    LeetCode 338. Counting Bits
    LeetCode 344. Reverse String
    [ZZ]良好的编码习惯
    学习笔记之Linux Shell脚本教程:30分钟玩转Shell脚本编程
  • 原文地址:https://www.cnblogs.com/diege/p/2714314.html
Copyright © 2011-2022 走看看