Other articles


  1. Django中翻页保留QueryString的两种实现

    问题就是从GET请求的参数中获取查询条件,但Django模板中的分页示例大致是这样的,页面上渲染出的分页链接只保留了 page 参数。

    {% if is_paginated %}
    <div class="paginator">
      {% if page_obj.has_previous %}
      <a herf="?page={{ page_obj.previous_page_number }}">上一页</a>
      {% endif %}
    
      <span class="current">{{ page_obj.number }} / {{ page_obj.paginator.num_pages }}</span>
    
      {% if page_obj.has_next %}
      <a href="?page={{ page_obj.next_page_number }}">下一页</a>
      {% endif %}
    </div>
    {% endif %}
    

    最初想到的是在 ?page= 前面或者后面加上当前页面已有的(除page外)QueryString ...

    read more

    There are comments.

  2. 瓶颈

    最近能明显感觉到自己开发遇到瓶颈了,说小了是用django开发,说大了就是自己的技术发展了。

    最开始用generic view搭建出最小可用的demo,然后就是在generic view和custom view之间改来改去,复制粘贴重命名,这样的感觉不好。

    有时候自己的前端能力让自己太受限了,为了不怎么写js代码,在urls和views里加了太多脏东西,实现变得很啰嗦,不好维护。

    什么时候才能摆脱这种不自由的状态呢。

    read more

    There are comments.

  3. Auto Reloader

    reloader的原理:

    保存文件的上次修改时间,每间隔一段时间检查文件的是否修改时间有变化,如果有,就重启应用。

    有一些地方要注意:

    1. 会出现fork的情况。
    2. 防止错误的条件检查,不断fork。

    判断文件修改的方式:从 sys.modules 找到引入的模块,根据每个 module.__file__ 的属性得到对应的代码文件路径,os.stat(filename).st_mtime 即为文件的修改时间。也可以把模板文件加到观察列表。

    Django dev server 实现 auto reload 的代码位于 django/utils/autoreload.py 。通过 os.spawnve(os.P_WAIT,...) fork,一个进程Process 1复制了所有运行参数,但 os.environ['RUN_MAIN']"true"thread ...

    read more

    There are comments.

  4. django-select2安装和使用

    浏览器渲染html页面原生的select遇到选项特别多的时候可用性太差,典型的如美国的50个州名、中国的300多个城市名,就算排好序,一下子丢出这么多选项不是好的选择。select没法搜索,基于jquery的项目select2解决了这个问题,select2使选项变得可搜索,能更便捷的找到想要的选项。

    django-select2 很好的将 select2 集成进 django 项目。

    一般地,总是能够这样安装,

    pip install django_select2
    

    安装后把 'django_select2' 加到 settings 的 INSTALLED_APPS 中,以app的方式集成进项目里。

    手动收集app里的静态文件,运行 python manage.py collectstatic

    还需要把(r'select2blahblah/', 'django_select2.urls') 加到自己的urls.py 中,这样前后端才能做数据交换。

    简单的使用,如有这样一个Model来描述一本书:

    class Book(models.Model ...
    read more

    There are comments.

Page 1 / 2 »

blogroll

social