我在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) 我有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)
这可能吗?
我有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文件中写三列(修改现有文件)
我有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 + 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) 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模板中做一个简短的if-else,比如在php中?
<?=$variable ? 'String for true' : 'String for false'?>
Run Code Online (Sandbox Code Playgroud)
如果变量值为true,则显示String for true否则String for false
我在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个或更多主题相关联.
我的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来隐藏它们.
我有这些模型,我想根据数据构建表单:
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表中的每个Beverage为Location。每个人都需要一个时间戳,以便我们可以拥有历史。我想我知道我需要表单集,但是我没有成功弄清楚如何为此实现它们。所以,这有点像两部分:
我用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源代码,但这里有这种行为的原因.
这是问题,我正在使用该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)
在第一个例子中,如果前两个项目也被交换,我想要的回报将被关闭.