我试图通过我的登台服务器上的Fabric运行一些Django管理命令.
问题是Fabric似乎无法激活virtualenv,因此在执行命令时使用系统python/libs.
在服务器上,Django应用程序使用virtualenv运行(不,我还没有使用virtualenvwrapper ......)
使用Fabric(1.0.1)从我的框运行时,命令可能如下所示:
fabfile方法:
def collectstatic():
require('settings', provided_by=[production, staging])
with settings(warn_only=True):
run('source %(env_path)s/bin/activate && python %(repo_path)s/%(project_name)s/configs/%(settings)s/manage.py collectstatic --noinput -v0' % env)
Run Code Online (Sandbox Code Playgroud)
输出:
$ fab staging master collectstatic
[myserver.no] Executing task 'master'
[myserver.no] Executing task 'collectstatic'
[myserver.no] run: source /home/newsapps/sites/mysite/env/bin/activate && python /home/newsapps/sites/mysite/repository/mysite/configs/staging/manage.py collectstatic --noinput -v0
[myserver.no] Login password:
[myserver.no] out: Unknown command: 'collectstatic'
[myserver.no] out: Type 'manage.py help' for usage.
Run Code Online (Sandbox Code Playgroud)
我当然知道Django命令collectstatic在1.3之前的版本中不存在,导致med认为系统python(有Django 1.2)正在使用.
我的fabfile /项目布局基于Tribapps家伙的精彩fabfile
所以我创建了一个测试pythonversion的fabric方法:
def pythonver():
require('settings', provided_by=[production, staging])
with settings(warn_only=True):
run('source %(env_path)s/bin/activate && …Run Code Online (Sandbox Code Playgroud) 我有一个Django视图,其中包含一个使用CSRF保护的表单.我希望在有正常的GET请求时由Varnish缓存此视图(因为所有用户都需要相同的表单,不需要登录).
所以有两个挑战:
如何在Varnish中缓存此页面而不向用户提供缓存/旧版本的csrf隐藏字段?是否可以使用CSRF字段缓存页面?
默认情况下,我的清漆会去掉所有的饼干,除了csrftoken饼干之外,我怎么能轻松地去掉所有的饼干?我是否必须设置特定的CSRF_COOKIE_DOMAIN?