小编And*_*s E的帖子

无法通过Fabric在服务器上激活virtualenv

我试图通过我的登台服务器上的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)

python django virtualenv fabric

10
推荐指数
2
解决办法
3704
查看次数

在Varnish缓存的视图上使用Django的CSRF保护

我有一个Django视图,其中包含一个使用CSRF保护的表单.我希望在有正常的GET请求时由Varnish缓存此视图(因为所有用户都需要相同的表单,不需要登录).

所以有两个挑战:

  1. 如何在Varnish中缓存此页面而不向用户提供缓存/旧版本的csrf隐藏字段?是否可以使用CSRF字段缓存页面?

  2. 默认情况下,我的清漆会去掉所有的饼干,除了csrftoken饼干之外,我怎么能轻松地去掉所有的饼干?我是否必须设置特定的CSRF_COOKIE_DOMAIN?

django csrf varnish

10
推荐指数
2
解决办法
4301
查看次数

标签 统计

django ×2

csrf ×1

fabric ×1

python ×1

varnish ×1

virtualenv ×1