Django tricks

关于 session

django.contrib.sessions.middleware | Django documentation | Django

session 是使用 cookie 来进行判断的,通过 session_cookie_name 来提取,然后通过 SessionStore() 来保存。

因此,Django 也是通过 sessionid 来区分用户;(或者其他什么名称)。

使用 cache 作为全局变量

cache.set(‘foo’, ‘bar’) # another function cache.get(‘foo’) # get ‘bar’

使用 cache , django-redis 是一个好方法。可以在使用 cache.lock变量,在应用层面加锁,来完成异步操作,还可以支持分布式应用,十分方便。

django 

# Python文件操作

Python的文件操作很多,为了方便以后查询使用,在此做下记录。

注:这些函数都可以在官网查询,这里做个cache。

[阅读全文]

Python拆包的好处

内容

在最近的一期 realpython 中,我阅读到了这样一段代码:

之前因为:

  1. 这个东西不是很直观
  2. 这个可能造成参数混乱

而不是很在意这段代码。现在想来,真是很方便的一个东西:我们可以通过这个特性,轻松的拆解response.json这个dict,从而直接使用参数。

注意一点,如果一个函数的参数超过三个,说明你需要拆解这个函数,而不是被参数的数量搞得焦头烂额。

具体例子

这个方法可以方便很多事情,比如说,我可以这样来重新构建输出的变量,而不是一个个print

python如何使用不可变量const


这样一来,就可以在python中使用不可变量了。其中,利用魔术方法__setattr__,把一个变量当作是const类的属性,然后使用__dict__来判断当前变量是否已经存在。

通过这个技巧我们还能构造出一系列有意思的东西——

运行截图

refer

pipenv入门指南

前言

pipenv是书写flask的大神kennethreitz的新作;pipenv集成了virtualenv和pip等工具,让你从requirements.pip以及virtualenv的环境中解放出来。并且他还集成了pyenv的选择python版本,可以说是所向披靡了。

这是他的原话:

相信随着pipenv更加流行,许多工具也会在自己的环境中对pipenv提供支持,解决许多令人不舒服的问题,也能更好的提高编辑的舒适度。

安装pipenv

创建虚拟环境 virtualenv

  1. 当不存在一个虚拟环境的时候,pipenv将会自动创建一个环境
  2. 你也可以手动创建虚拟环境:
    1. $ pipenv --three 创建Python3虚拟环境
    2. $ pipenv --two 创建Python2虚拟环境
  3. 其他的东西和virtualenv是一样的。

安装包

比如你要使用requests(是的也是这个大神写的)。

安装完成后,会生成Pipfile以及Pipfile.lock;这一点很像npm.

其他命令

  1. 激活当前虚拟环境 pipenv shell
  2. 运行虚拟环境中的命令 pipenv run python
  3. 把你的依赖图输出出来 pipenv graph
  4. 安装当前目录的相关依赖 pipenv install

使用问题

目前我使用的时候也会多少存在问题,比如说我看不见下载的进度条,默认不是开启的;

然后就是因为网络环境的问题,我的pip.conf设置不能应用到pipenv上,我需要自己手动更改Pipfile,这一点有些麻烦。

后记

本身我想把这个文章针对的群体稍微降降,针对一些技术能力不是特别高的群体,但是存在一些问题,比如有些东西是需要一定知识才能看懂的。如果出现了不懂的内容,尽量自己查找一下吧。

Python-Tips

来自分布在各处的开发tips

使用nametuple

nametuple用来构建只有少数属性但是没有方法的对象,比如数据库条目。

[阅读全文]

Python在Ubuntu中使用形式

Python在Ubuntu中的形式十分杂乱。对于Debian已经很久没有使用过了,因此不太清楚Debian对于Python的版本是如何管理的。

但是在CentOS中,Python的管理方式是,默认不安装Python3。(CentOS6.5)这对于系统的纯洁性具有相当的保护性。

行文至此,不得不想到,肯定有对于此类讲解的书籍,也会说的比我更加明确。对于此问题,如果我继续深入的读读书,谈一谈,可能会更好。

Debian系的Ubuntu顺承了上游的想法同时包含两个东西,但是我认为,这并不是一个正确的做法。因为总有程序员写代码的时候不喜欢使用env python2。这也就解释了为什么我们仅仅修改了python的指向,但是依然容易出问题。

https://www.zhihu.com/question/21653286

知乎上有许多pip3这种答案,但是这其实是有问题的。尤其是当存在缓存的时候,如果pip2pip3同时安装一个包的时候,pip3或者pip2会读取另一方的缓存,导致安装失败。然后陆续出现问题。这是我所遇到的, 尽管不一定100%发生,但是如果发生了,就对行云流水的体验造成了很大的影响——我不得不去G搜看看问题所在。

所以,最终的解决方案?

http://www.ituring.com.cn/article/261302

以后Linux相关书籍以及想法就写在图灵社区,最终成书,对于大学程序员起指导作用。

Python-建立最简单的web服务器

本文出自svtter.github.io

有三个服务模块可以使用:

  • BaseHTTPServer 最基础web服务.
  • SimpleHTTPServer 可以处理GET和HEAD.
  • CGIHTTPServer 可以处理POST请求和执行CGI.

只需要一行代码即可:

如果8080端口被占用,可以选择别的端口来使用.

此处的 SimpleHTTPServer 可以使用以上三个服务模块替代