分类目录归档:python

python小技巧

#if 语句在行内
print "Hello" if True else "World"
>>> Hello

#向下取整
print 5.0//2
>>> 2
# 2的5次方
print 2**5
>> 32

#浮点数的除法

print .3/.1
>>> 2.9999999999999996
print .3//.1
>>> 2.0

#两个列表同时迭代

nfc = ["Packers", "49ers"]
afc = ["Ravens", "Patriots"]
for teama, teambin zip(nfc, afc):
    print teama + " vs. " + teamb
>>> Packers vs. Ravens
>>> 49ers vs. Patriots

#带索引的列表迭代

teams = ["Packers", "49ers", "Ravens", "Patriots"]
for index, teamin enumerate(teams):
    printindex, team
>>> 0 Packers
>>> 1 49ers
>>> 2 Ravens
>>> 3 Patriots

#用下面的代替

numbers = [1,2,3,4,5,6]
even = [number for numberin numbers if number%2 == 0]

#字典推导

teams = ["Packers", "49ers", "Ravens", "Patriots"]
print {key: value for value, keyin enumerate(teams)}
>>> {'49ers': 1, 'Ravens': 2, 'Patriots': 3, 'Packers': 0}

#初始化列表的值

items = [0]*3
print items
>>> [0,0,0]

#将列表转换成字符串

teams = ["Packers", "49ers", "Ravens", "Patriots"]
print ", ".join(teams)
>>> 'Packers, 49ers, Ravens, Patriots'

#不要用下列的方式

data = {'user': 1, 'name': 'Max', 'three': 4}
try:
  is_admin = data['admin']
except KeyError:
  is_admin = False
#替换为
data = {'user': 1, 'name': 'Max', 'three': 4}
is_admin = data.get('admin', False)

nginx+uwsgi部署django项目

        

#用nginx和uwsgi来部署django项目
##1. 安装基本软件

sudo apt-get install python-dev
sudo apt-get install nginx
pip install uwsgi

##2.配置uwsgi和django的集成

vim test.py 创建test.py,添加如下代码
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return "Hello World"

然后执行shell命令:
uwsgi –http :8001 –wsgi-file test.py

访问网页:
http://127.0.0.1:8001/

编写django_wsgi.py文件,将其放在与文件manage.py同一个目录下:
vim django_wsgi.py 添加如下代码:

#!/usr/bin/env python
# coding: utf-8

import os
import sys

# 将系统的编码设置为UTF8
reload(sys)
sys.setdefaultencoding('utf8')

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "yoursite.settings")

from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()

连接django和uwsgi,实现简单的WEB服务器。
我们假设你的Django项目的地址是/home/work/src/sites/testdjango1/testdjango/mysite,

然后,就可以执行以下命令:
uwsgi –http :8000 –chdir /home/work/src/sites/testdjango1/testdjango/mysite –module django_wsgi
这样,你就可以在浏览器中访问你的Django程序了。所有的请求都是经过uwsgi传递给Django程序的。

##集成django,uwsgi和nginx部署:
####a.在django项目根目录创建启动uwsgi的xml文件:

<uwsgi>
    <socket>:8077</socket>
    <chdir>/home/work/src/sites/testdjango1/testdjango/mysite</chdir>
    <module>django_wsgi</module>
    <processes>4</processes> <!-- 进程数 --> 
    <daemonize>uwsgi.log</daemonize>
</uwsgi>

####b.配置Nginx服务器:
备份nginx配置文件:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
vim /etc/nginx/sites-available/default 修改如下:

server {

        listen   80;
        server_name localhost;
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
         include        uwsgi_params;
         uwsgi_pass     127.0.0.1:8077;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        #method first
        location ~ ^/static/ {
            root  /home/hz/PycharmProjects/myscrapy/check_ip/;
            expires 24h;
            access_log off;
        }
        #method second
        #location ~* ^.+\.(css|js|json|ttf|woff|map|woff2)${
        #    root /home/hz/PycharmProjects/myscrapy/check_ip/;
        #    access_log off;
        #    expires 24h;
        #}      
}

如果不能访问日志文件,修改相关文件的权限即可
####c. 验证测试各步骤结果
重启Nginx服务器,以使Nginx的配置生效。
nginx -s  reload
重启后检查Nginx日志是否有异常。

启动uWSGI服务器

cd /home/work/src/sites/testdjango1/testdjango/mysite

uwsgi -x djangochina_socket.xml

####d.django搜集静态文件
settings.py文件中指定STATIC_ROOT路径
python manage.py collectstatic

修改nginx配置文件指定目录到STATIC_ROOT