Django常见问题

django模板中取QuerySet第一个元素

问题:

如何在模板中取到data_list(是一个QuerySet)的第一个元素的name属性值(即data_list[0].name)?

解决方法:

在模板中不支持'[]'方式取属性值 ,但可用'.'方式取属性值,即 {{data_list.0.name}}

搜集自QQ群:69930365

nginx+uwsgi配置下,504响应解决办法

当服务器程序要处理的文件多或大的时候,可能需要等待时间比较长,如果nginx使用默认的配置,一般是60秒就会出现timeout 504,如果系统在60秒没有返回结果时,就被timeout 504,会影响到系统的使用。
这里简单介绍如何修改nginx.conf配置文件,防止timeout 504:

fastcgi_connect_timeout 300;  
fastcgi_send_timeout 300;  
fastcgi_read_timeout 300;  
fastcgi_buffer_size 256k;        
#以下四个参数已加大,如果设置太小也会出现timeout 504
fastcgi_buffers 16 256k;  
fastcgi_busy_buffers_size 512k;  
fastcgi_temp_file_write_size 512k;
 

server {
        listen  80;
        server_name localhost;
        location / {
            include     uwsgi_params;
            uwsgi_pass   127.0.0.1:9001;
            access_log /data/logs/uwsgi_access.log;
            uwsgi_read_timeout 1800;  
            uwsgi_send_timeout 300;  
            proxy_read_timeout 300;  
            }
            
        location ^~ /static {
            root	/var/www/seotool;
            expires	24h;
            access_log	off;
            }
    }

转自:http://www.linuxyw.com/470.html

bulk_create异常(IntegrityError)处理

使用 django表对象.objects.bulk_create可进行批量数据插入。

问题:如果某一条数据存在IntegrityError异常,将导致整个批量插入的失败。

解决方法

建立一张完全一样的临时表,先将要插入数据先批量插入到临时表(用bulk_create),再用SQL从临时表中插入目标表不存在的记录到目标表,SQL如下(可将其存储为MYSQL过程):

INSERT INTO wordbank_classify (name,genre,createdate)
SELECT name,genre,createdate FROM wordbank_classifytmp WHERE NOT EXISTS (
    SELECT 1 FROM wordbank_classify WHERE wordbank_classifytmp.`name`=wordbank_classify.`name`
  )