有没有办法在python中以编程方式确定控制台的宽度?我的意思是在没有包装的情况下适合一行的字符数,而不是窗口的像素宽度.
编辑
寻找适用于Linux的解决方案
我有模型Foo有字段栏.bar字段应该是唯一的,但允许空值,这意味着如果bar字段是null
,我想允许多个记录,但如果不是,null
则值必须是唯一的.
这是我的模型:
class Foo(models.Model):
name = models.CharField(max_length=40)
bar = models.CharField(max_length=40, unique=True, blank=True, null=True, default=None)
Run Code Online (Sandbox Code Playgroud)
这是表的相应SQL:
CREATE TABLE appl_foo
(
id serial NOT NULL,
"name" character varying(40) NOT NULL,
bar character varying(40),
CONSTRAINT appl_foo_pkey PRIMARY KEY (id),
CONSTRAINT appl_foo_bar_key UNIQUE (bar)
)
Run Code Online (Sandbox Code Playgroud)
当使用管理界面创建多个bar为空的foo对象时,它会给出一个错误:"Foo with this Bar已经存在."
但是当我插入数据库(PostgreSQL)时:
insert into appl_foo ("name", bar) values ('test1', null)
insert into appl_foo ("name", bar) values ('test2', null)
Run Code Online (Sandbox Code Playgroud)
这很好用,它允许我插入超过1条记录,条形为空,所以数据库允许我做我想要的,这只是Django模型的错误.有任何想法吗?
编辑
就DB而言,解决方案的可移植性不是问题,我们对Postgres感到满意.我已经尝试设置一个可调用的唯一,这是我的函数返回True/False为特定的bar值,它没有给出任何错误,但是如果它没有任何影响那么缝合.
到目前为止,我已经从bar属性中删除了唯一的说明符并处理了应用程序中的bar唯一性,但仍然在寻找更优雅的解决方案.有什么建议?
我有一个看起来像这样的模型:
class Category(models.Model):
name = models.CharField(max_length=60)
class Item(models.Model):
name = models.CharField(max_length=60)
category = models.ForeignKey(Category)
Run Code Online (Sandbox Code Playgroud)
我想要为每个类别选择项目的计数(只是计数),所以在SQL中它就像这样简单:
select category_id, count(id) from item group by category_id
Run Code Online (Sandbox Code Playgroud)
有没有相当于这样的"Django方式"?或者纯SQL是唯一的选择吗?我熟悉Django中的count()方法,但我不知道group by是如何适合的.
我们正在完成我们的Web应用程序并计划部署.部署到生产的非常重要的方面是监视系统的健康状况.拥有一个小型的开发人员/支持团队,对于我们来说,获取潜在问题的早期通知并在对用户产生影响之前解决这些问题非常关键.
使用Nagios接口是一个很好的选择,但是想要获得更多关于Web应用程序的最佳监控工具/实践的意见,特别是对于Django应用程序?除了显而易见的CPU,内存,磁盘空间,数据库连接之外,还欢迎有关应该监控的内容的建议.
我们的Web应用程序是用Django编写的,我们使用PostgreSQL数据库在Apache + Fast CGI下运行Linux(Ubuntu).
编辑 我们在Linode下有一个完全虚拟化的环境.
编辑 我们正在使用django-logging,所以我们有一个单独的信息,错误,关键问题等方式.
在我的django应用程序中,在某些条件下,我需要能够通过用户名强制用户注销.不一定是当前登录的用户,而是其他一些用户.因此,我视图中的请求方法没有关于我要注销的用户的任何会话信息.
我熟悉django.auth,并使用auth.logout方法,但它将请求作为参数.如果我拥有的是用户名,是否有"django-way"来记录用户?或者我必须滚动自己的注销sql?
我正在编写一个应用程序,我将从django和独立应用程序访问数据库.两者都需要进行会话验证,并且两者的会话应该相同.Django有一个内置的身份验证/会话验证,这就是我正在使用的,现在我需要弄清楚如何为我的独立应用程序重用相同的会话.
我的问题是如何查找特定用户的session_key?
从它的外观来看,没有任何东西将auth_user和django_session联系在一起
我有一个表单,其中包含使用CheckboxSelectMultiple小部件的选项字段:
foo = forms.ChoiceField(widget=forms.CheckboxSelectMultiple,
choices=(
("1", "ONE"),
("2", "TWO"),
))
Run Code Online (Sandbox Code Playgroud)
表单呈现正常显示两个复选框,但它不验证.
如果我同时选中这两个复选框,则会收到错误:选择有效选项.[u'1',u'2']不是可用的选择之一
选择一个复选框也不起作用,它给了我:选择一个有效的选择.[u'1']不是可用的选择之一.
这里发生了什么?
在我的django应用程序中,我使用模板构建电子邮件正文,其中一个参数是url,注意在url中有两个由&符号分隔的参数.
t = loader.get_template("sometemplate")
c = Context({
'foo': 'bar',
'url': 'http://127.0.0.1/test?a=1&b=2',
})
print t.render(c)
Run Code Online (Sandbox Code Playgroud)
渲染后产生: http://127.0.0.1/test?a=1&b=2
请注意,&符是HTML编码为"&".解决这个问题的一种方法是将每个参数分别传递给我的模板并在模板中构建url,但是我想避免这样做.
有没有办法禁用上下文参数的HTML编码或至少避免编码&符号?
我需要从进入服务器的HTTP请求中删除cookie.在客户端(写入此cookie)或服务器(读取它)上执行此操作不是一种选择.我有Apache 2.0代理客户端和服务器之间的请求,所以我希望使用mod_rewrite在Apache中删除cookie.
我的问题是,有没有办法使用mod_rewrite从HTTP请求中删除某个cookie?
如果不能只删除一个 cookie,那么作为最后的手段从请求中删除所有 cookie?
如果mod_rewrite不是此任务的正确工具,我愿意接受有关如何完成此操作的其他建议.
我有以下型号:
class Car(models.Model):
make = models.CharField(max_length=40)
mileage_limit = models.IntegerField()
mileage = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)
我想选择里程小于mileage_limit的所有汽车,所以在SQL中它会是这样的:
select * from car where mileage < mileage_limit;
Run Code Online (Sandbox Code Playgroud)
在Django中使用Q对象,我知道我可以将列与任何值/对象进行比较,例如,如果我想获得里程数小于100,000的汽车,那将是:
cars = Car.objects.filter(Q(mileage__lt=100000))
Run Code Online (Sandbox Code Playgroud)
我想使用列名称(在我的情况下是里程数限制),而不是固定值.所以我希望能够做到这样的事情:
cars = Car.objects.filter(Q(mileage__lt=mileage_limit))
Run Code Online (Sandbox Code Playgroud)
但是,这会导致错误,因为它需要一个值/对象,而不是列名.有没有办法使用Q对象比较两列?我觉得这将是一个非常常用的功能,应该有一个简单的方法来做到这一点,但在文档中找不到任何相关的东西.
注意:这是一个简化的例子,使用Q对象可能不需要缝合.然而,真实模型有更多的列,真正的查询更复杂,这就是我使用Q的原因.在这个问题中,我只想弄清楚如何使用Q比较列.
编辑
显然在发布Django 1.1之后,可以执行以下操作:
cars = Car.objects.filter(mileage__lt=F('mileage_limit'))
Run Code Online (Sandbox Code Playgroud)
仍不确定F是否应与Q一起工作:
cars = Car.objects.filter(Q(mileage__lt=F('mileage_limit')))
Run Code Online (Sandbox Code Playgroud) django ×8
python ×4
orm ×2
apache ×1
apache2 ×1
console ×1
deployment ×1
django-forms ×1
linux ×1
mod-rewrite ×1
monitoring ×1
session ×1
terminal ×1
width ×1