我正在使用Django 1.3 beta 1并设置memcached.我对settings.py
每个Django的指令进行了更改:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
'LOCATION': '127.0.0.1:11211',
}
}
MIDDLEWARE_CLASSES = (
'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
#'debug_toolbar.middleware.DebugToolbarMiddleware',
)
CACHE_MIDDLEWARE_SECONDS = 100000
CACHE_MIDDLEWARE_KEY_PREFIX = 'site_cache'
Run Code Online (Sandbox Code Playgroud)
这是我正在尝试的测试视图功能:
def home(request):
print 'uncached'
# ...View's code...
Run Code Online (Sandbox Code Playgroud)
我总是uncached
打印在开发服务器的输出上,我总是得到数据库的命中.为什么?我是否遗漏了某些内容或者完全误解了缓存?
模板片段缓存工作完全正常.我只是错过了一些东西吗?请帮忙.
我使用GET方法设置了Django表单.每个值对应于Django模型的属性.什么是生成查询的最优雅方式?目前这是我在视图中所做的:
def search_items(request):
if 'search_name' in request.GET:
query_attributes = {}
query_attributes['color'] = request.GET.get('color', '')
if not query_attributes['color']: del query_attributes['color']
query_attributes['shape'] = request.GET.get('shape', '')
if not query_attributes['shape']: del query_attributes['shape']
items = Items.objects.filter(**query_attributes)
Run Code Online (Sandbox Code Playgroud)
但我很确定有更好的方法可以解决这个问题.
来自Django文档:
...数据库不会在doctests之间刷新,所以如果你的doctest需要某个状态,你应该考虑刷新数据库或加载一个fixture.
坦率地说,90%的测试目前都是在doctests中完成的.我的一位同事认为这是特殊的.老实说,我做的测试很少,所以我不会假装成为那个领域的大师.
在决定如何测试时,有没有人有他们使用的经验法则?
我的一位同事建议通过单元测试来测试模型函数和约束作为doctests和views.根据经验,这听起来怎么样?
现在我必须做类似(模板代码)的事情:
object.name|safe
Run Code Online (Sandbox Code Playgroud)
很多时候我只是忘记添加safe
过滤器。我的问题:
这些对象是用户在表单级别提交和清理的。是否有理由让我更小心地将它们标记为安全?
如果上面的答案是“你很高兴”,我如何在默认情况下使模型字段安全?无需记住使用safe
标签?
我试图找出一种方法来声明一个空变量来存储os.Create
and的返回值os.Open
。代码:
func main() {
var path = "list.txt"
// Some attempts:
// var file File{}
// var file *File
// Check if file exists
var _, err = os.Stat(path)
// If new file, create it
if os.IsNotExist(err) {
var file, err = os.Create(path)
// If file exists, open it
} else {
var file, err = os.Open(path)
}
// Check errors opening and creating file
if err != nil {
log.Fatal(err)
return
}
// Defer closing …
Run Code Online (Sandbox Code Playgroud) 尝试使用easy_install在整个南站点安装.但是我有权限问题:
drwxr-x--- 2 root root 4096 Nov 8 10:23 South-0.7.2-py2.6.egg-info
Run Code Online (Sandbox Code Playgroud)
然后我尝试用pip安装它,但收到了相同的结果.
我假设我可以通过更改权限来解决这个问题.但是,我在安装过程中做错了什么?或者包装有问题吗?
iddqd:请发送输出.sudo pip install -e hg + http://bitbucket.org/andrewgodwin/south/
结果如下:
$ sudo pip-python install -e hg+http://bitbucket.org/andrewgodwin/south/
--editable=hg+http://bitbucket.org/andrewgodwin/south/ is not the right format; it must have #egg=Package
Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的 Django 模型:
class Person(models.Model):
name = models.CharField(max_length=32)
place = models.ForeignKey(Place, related_name='people')
approved = models.BooleanField()
objects = PersonManager()
@models.permalink
def get_absolute_url(self):
return('deal_details', (), {
'person_slug': slugify(self.name),
})
Run Code Online (Sandbox Code Playgroud)
如您所见,我已经有了对象的绝对 URL。但是,我想创建一个难以猜测的 URL 来跟踪对象的批准过程。有人做过类似的事情和/或对我应该如何进行有任何建议吗?
我的第一个想法是创建一个像obfuscated_key
这样的模型字段,它是通过save
模型的函数随机生成的。然后 URL 看起来像/people/status/<id>/<obfuscated_key>/
. 但也许有更好的方法来解决这个问题?
我有一个通常为空的CharField.mail_managers
当字段设置为非空值时,我想向所有管理员发送电子邮件通知(使用).只有通过管理站点才能对此字段进行更改.
我认为这可能是我可以通过信号做的事情,但我没有看到文档中列出的适当信号.有任何想法吗?
它会消除空白.但是,除了可读性差外,我应该注意哪些潜在的风险?
这是标签的Django文档.
我有一个查询,结果每天只改变一次.对于我为该页面获得的每个请求来说,这似乎是一种浪费.我正在调查使用memcached.
我该怎么开始?任何人都有任何建议或陷阱我应该避免使用Django的缓存?我应该在模板或视图中缓存吗?
这个问题可能看起来很模糊,但这只是因为我以前从未处理过缓存.所以,如果有什么东西我可以详细说明,请只问.
Per Ken Cochrane:
此数据的更改频率如何:相关数据将在该日历日期锁定.因此,举例来说,我将提取2011年1月30日的数据,我可以整天提供缓存副本,直到2011年1月31日,它将被刷新.
我是否在多个地方使用此数据:仅在一个视图中.
它将包含多少数据:平均包含大约15个字段的10个模型对象,其中最大的是a CharField(max_length=120)
.我会将使用的字段数减少values()
到大约一半.
我知道非常少有关Java,更不用说JASIG CAS.
我们正在尝试在CentOS 6服务器上实施CAS.我们收到以下错误:
java.io.FileNotFoundException: cas.log (Permission denied)
[...snip...]
java.io.FileNotFoundException: perfStats.log (Permission denied)
Run Code Online (Sandbox Code Playgroud)
经过一番调查,似乎tomcat6
是在尝试在其主目录(/usr/share/tomcat6/
)中写入日志文件.我能够确定这个chown tomcat: /usr/share/tomcat6
,然后在重新启动后,在该目录中创建了日志文件.
所有其他日志都写入/usr/share/tomcat6/logs
了符号链接/var/log/tomcat6
.
我想知道如何重新配置CAS以将这2个日志文件写入不同的目录/usr/share/tomcat6/logs
)?
如何比较Django模板中的日期?我想到了几种可能的途径:
虽然最后一个选项看起来更容易,但我宁愿将显示逻辑留在模板中而不是视图中.我也不想在模板上下文中传递像今天日期那样微不足道的东西.
也许某人有另一种选择,或者可以分享他们对我上面提到的选项之一的实施,以及为什么他们决定走这条路.
我有一个看起来像这样的字符串:
<name>-<gender>-<age>.jpg
Run Code Online (Sandbox Code Playgroud)
就我所接受的而言,我想要非常自由.要求是:
<name>
组件是必需的..jpg
文件扩展名<name>.jpg
<name>-<gender>.jpg
<name>-<gender>-<age>.jpg
被认为有效的例子:
Beamin-M.jpg
Jean.jpg
Maria-F-23.jpg
Run Code Online (Sandbox Code Playgroud)
我想使用正则表达式分解字符串的每个组件,但我不想捕获短划线(-
).我尝试使用非捕获组,但无法获得我正在寻找的结果:
>>> import re
>>> r = re.compile(r'([^\-]*)((?:\-)[^\-]*)?((?:\-)[^\-]*)?\.jpg')
>>> for d in (
... 'Beamin-M.jpg',
... 'Jean.jpg',
... 'Maria-F-23.jpg',
... ):
... print r.match(d).groups()
...
('Beamin', '-M', None)
('Jean', None, None)
('Maria', '-F', '-23')
Run Code Online (Sandbox Code Playgroud)
有没有人有什么建议?
django ×9
python ×8
django-cache ×2
memcached ×2
cas ×1
datetime ×1
distribute ×1
django-admin ×1
django-urls ×1
django-views ×1
doctest ×1
egg ×1
go ×1
jasig ×1
java ×1
obfuscation ×1
regex ×1
setuptools ×1
testing ×1
tomcat ×1
tomcat6 ×1
unit-testing ×1