小编San*_*4ez的帖子

在调试模式下Django Broken管道

我在Nginx后面的远程服务器上有django 1.3.

如果我用apache + mod_wsgi运行django,我可以在apache日志文件中查看错误.没关系,但我想要在控制台中.

如果我运行django自己的开发服务器,只有在DEBUG = False时才会在控制台中出现stacktrace错误.在DEBUG模式控制台输出中

Exception happened during processing of request from (..., ...)
Traceback (most recent call last):
  File "/usr/local/python/lib/python2.7/SocketServer.py", line 284, in _handle_request_noblock
    self.process_request(request, client_address)
  File "/usr/local/python/lib/python2.7/SocketServer.py", line 310, in process_request
    self.finish_request(request, client_address)
  File "/usr/local/python/lib/python2.7/SocketServer.py", line 323, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/local/python/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 570, in __init__
    BaseHTTPRequestHandler.__init__(self, *args, **kwargs)
  File "/usr/local/python/lib/python2.7/SocketServer.py", line 641, in __init__
    self.finish()
  File "/usr/local/python/lib/python2.7/SocketServer.py", line 694, in finish
    self.wfile.flush()
  File "/usr/local/python/lib/python2.7/socket.py", line 301, in flush
    self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] …
Run Code Online (Sandbox Code Playgroud)

django broken-pipe

48
推荐指数
3
解决办法
4万
查看次数

使用block.super附加到Django模板中的站点<title>

我有3个Django模板:

base.html文件

<title>{% block title %} SITE NAME {% endblock %}</title>
Run Code Online (Sandbox Code Playgroud)

default.html中

{% extends "base.html" %}
{% block title %} {{ block.super }} - SECTION NAME {% endblock %}
Run Code Online (Sandbox Code Playgroud)

main.html中

{% extends "default.html" %}
{% block title %} {{ block.super }} {% endblock %}
Run Code Online (Sandbox Code Playgroud)

我想在模板main.html中获取SITE NAME,即父块的父级内容.就像是

{{ block.super.super }}
Run Code Online (Sandbox Code Playgroud)

这可能吗?

django block super

12
推荐指数
2
解决办法
8939
查看次数

如何使用Python脚本从CSV文件过滤

我有abx.csv文件有三列.我想过滤具有Applicationas 的数据并将其Central写入相同的.csv文件中

User ID   Name        Application  

001       Ajohns      ABI
002       Fjerry      Central
900       Xknight     RFC
300       JollK       QDI
078       Demik       Central
Run Code Online (Sandbox Code Playgroud)

我需要User ID,Name,Apllication在同一个.csv文件中写三列(修改现有文件)

python csv filter

12
推荐指数
2
解决办法
3万
查看次数

带有线程的Python超时上下文管理器

我有timeout与信号完美配合的上下文管理器,但它在多线程模式下引发错误,因为信号只在主线程中起作用.

def timeout_handler(signum, frame):
    raise TimeoutException()

@contextmanager
def timeout(seconds):
    old_handler = signal.signal(signal.SIGALRM, timeout_handler)
    signal.alarm(seconds)
    try:
        yield
    finally:
        signal.alarm(0)
        signal.signal(signal.SIGALRM, old_handler)
Run Code Online (Sandbox Code Playgroud)

我见过装饰器的实现,timeout但我不知道如何传递yield内部派生的类threading.Thread.我的变体不起作用.

@contextmanager
def timelimit(seconds):
    class FuncThread(threading.Thread):
        def run(self):
            yield

    it = FuncThread()        
    it.start()
    it.join(seconds)

    if it.isAlive():
        raise TimeoutException()
Run Code Online (Sandbox Code Playgroud)

python timeout contextmanager time-limiting

9
推荐指数
2
解决办法
7150
查看次数

Django和Python + uWSGI

使用指令我尝试连接Python + uWSGI.

我在一个文件夹/ home/sanya/django/pasteurl中创建了默认项目.但是,在我得到的浏览器中打开它

uWSGI Error
wsgi application not found
Run Code Online (Sandbox Code Playgroud)

日志包含以下内容:

binding on TCP port: 9001
your server socket listen backlog is limited to 64 connections
added /home/sanya/django/pasteurl to pythonpath.
initializing hooks...done.
...getting the applications list from the 'django' module...
uwsgi.applications dictionary is not defined, trying with the "applications" one...
applications dictionary is not defined, trying with the "application" callable.
static applications not defined, you have to use the dynamic one...
spawned uWSGI …
Run Code Online (Sandbox Code Playgroud)

python django wsgi nginx uwsgi

7
推荐指数
1
解决办法
1万
查看次数

Django过滤查询集交集?

class Item(models.Model):
    ...

class ItemSet(models.Model):
    items = models.ManyToManyField(Item, related_name="itemsets")
Run Code Online (Sandbox Code Playgroud)

我有一个ItemSets列表.我想找到所有Item对象,其中Item对象位于至少一个ItemSet对象的"items"M2M字段中.

我怎样才能做到这一点?

PS这是我尝试过的,但无济于事:

itemset_list = [itemset1, itemset2, itemset3]    
items = Item.objects.filter(itemsets__in=itemset_list)
Run Code Online (Sandbox Code Playgroud)

django many-to-many intersection set django-models

6
推荐指数
1
解决办法
1万
查看次数

简短的if-else django模板

我想知道是否有任何方法可以在django模板中做一个简短的if-else,比如在php中?

  <?=$variable ? 'String for true' : 'String for false'?>
Run Code Online (Sandbox Code Playgroud)

如果变量值为true,则显示String for true否则String for false

django django-templates

6
推荐指数
1
解决办法
6010
查看次数

django admin中的通用多对多关系

我在Django中几乎没有类似的模型:

class Material(models.Model):
    title = models.CharField(max_length=255)
    class Meta:
        abstract = True

class News(Material):
    state = models.PositiveSmallIntegerField(choices=NEWS_STATE_CHOICES)

class Article(Material):
    genre = models.ForeignKey(Genre, verbose_name='genre')
Run Code Online (Sandbox Code Playgroud)

和模型主题,与新闻和文章相关的ManyToMany.

我想在这种情况下使用Generic多对多关系.但问题是如何在django admin中使用默认的ManyToMany小部件.或者另一种方便的模拟.

UPD:如果我没有使用泛型,我会写

class News(Material): 
    topic = models.ManyToMany(Topic) 

class Article(Material):
    topic = models.ManyToMany(Topic)
Run Code Online (Sandbox Code Playgroud)

我会得到2个相同的表来表达这些关系.我想知道我是否可以使用泛型来拥有一个中间表,因为不仅新闻和文章可能在我的数据库中有主题.新闻和文章也可能与2个或更多主题相关联.

generics django many-to-many django-admin

5
推荐指数
1
解决办法
4088
查看次数

在Django中隐藏内联表单

我的Django ModelAdmin依赖于用户权限显示不同的表单.我用ModelForm(get_form,get_fieldsets)解决了这个问题,但是如何处理内联?

class NewsAdmin(admin.ModelAdmin):
    form = NewsAdminForm
    writing_form = NewsWritingForm

    inlines = (LinkInline, FileInline)
Run Code Online (Sandbox Code Playgroud)

ModelAdmin ModelAdmin.__init__()在获取请求对象之前初始化它们.唯一的方法似乎是使用CSS来隐藏它们.

django inline django-admin

5
推荐指数
2
解决办法
3275
查看次数

Django:创建动态表单

我有这些模型,我想根据数据构建表单:

class Location(models.Model):
    name=models.CharField(max_length=255)
    location_id=models.CharField(max_length=255)
    organization=models.CharField(max_length=255)

    def __unicode__(self):
        return self.name

class Beverage(models.Model):
    name=models.CharField(max_length=255)
    location=models.ForeignKey(Location)
    fill_to_standard=models.IntegerField(max_length=10)
    order_when_below=models.IntegerField(max_length=10)

    def __unicode__(self):
        return self.name

class Inventory(models.Model):
    location=models.ForeignKey(Location)
    beverage=models.ForeignKey(Beverage)
    units_reported=models.IntegerField(max_length=10)
    timestamp=models.DateTimeField(auto_now=True)
Run Code Online (Sandbox Code Playgroud)

这是我想要发生的事情,当用户去更新特定位置的库存时,我希望他们得到一个表格,列出该位置的所有可能的饮料(饮料因位置而异),然后创建一个Inventory表格这将创建在一个新行Inventory表中的每个BeverageLocation。每个人都需要一个时间戳,以便我们可以拥有历史。我想我知道我需要表单集,但是我没有成功弄清楚如何为此实现它们。所以,这有点像两部分:

  1. 我的模型设计是否适合这个问题?
  2. 我如何制作依赖于饮料数量的表格来构建自己?

python forms django models

5
推荐指数
1
解决办法
3376
查看次数

signal.SIGALRM with uwsgi

我用uwsgi服务器运行django.我的代码包含许多与urllib2的api调用,如下所示:

with closing(urllib2.urlopen(request, timeout=1)) as f:
    content = f.read()
Run Code Online (Sandbox Code Playgroud)

即使我设置套接字超时,我看到请求需要更多秒钟,我想.我想这是因为超时限制了套接字连接而不是数据读取.

我想限制这个代码块.试图实现它,signal.SIGALRM但它不适用于uwsgi(我没有运行enable-threads).但它适用于Apache + mod_wsgi.线程超时看起来不可靠.

没有错误,SIGALRM只是被忽略harakiri模式.我不擅长阅读C源代码,但这里有这种行为的原因.

python signals timeout uwsgi

3
推荐指数
1
解决办法
803
查看次数

Python按字母数字字符串列表排序?

这是问题,我正在使用该sorted函数来排列字母数字字符串列表.所述字符串必须以字母分隔.

例如: sortqns(['s1q1', 's10q1', 's1q2', 's10q10', 's10q2'])

def cmpqn(a, b):
    if len(a) > len(b):
      return 1
    if len(a) < len(b):
      return -1
    if len(a) == len(b):
      return 0

def sortqns(qnlist):
    new = sorted(qnlist, cmp=cmpqn) 
    return new
Run Code Online (Sandbox Code Playgroud)

返回 ['s1q1', 's1q2', 's10q1', 's10q2', 's10q10']

我的问题是排序第二个数字:

sortqns(['s12q1', 's1q2', 's1q1'])

Returns ['s1q2', 's1q1', 's12q1']
Run Code Online (Sandbox Code Playgroud)

代替:

Returning ['s1q1', 's1q2', 's12q1']
Run Code Online (Sandbox Code Playgroud)

在第一个例子中,如果前两个项目也被交换,我想要的回报将被关闭.

python list sorted

0
推荐指数
1
解决办法
1489
查看次数