管理员中的 Django Guardian TemplateSyntaxError

Posted

技术标签:

【中文标题】管理员中的 Django Guardian TemplateSyntaxError【英文标题】:Django Guardian TemplateSyntaxError In Admin 【发布时间】:2011-11-13 22:55:59 【问题描述】:

尝试在管理站点中使用 django-guardian 编辑对象权限时出现此错误。

渲染时捕获的 VariableDoesNotExist:在 u'[,\'csrf_token\':,\'debug\':True,\'sql_queries\':[\' 中查找键 [adminform] 失败堆栈跟踪\':...

模板错误

在模板 /Library/Python/2.7/site-packages/grappelli/templates/admin/change_form.html 中,第 34 行出错

发生错误的行。

var related_lookup_fields_fk = % get_related_lookup_fields_fk adminform.model_admin %;    

如果这有什么不同的话,我会使用 grappelli 和 south。

我的模型

class Alert(models.Model):
    """Alert for product updates"""
    product = models.ForeignKey(Product)
    message = models.CharField(help_text="What has changed?",blank=True, max_length=200)
    created = models.DateTimeField(auto_now_add=True, editable=False)
    updated = models.DateTimeField(auto_now=True, auto_now_add=True, editable=False)    

    def __unicode__(self):
        return u"%s" % self.message

    class Meta:
        ordering = ['-created']
        permissions = (
            ('view_alert', 'View Alert'),
        )

Admin.py

class AlertAdmin(GuardedModelAdmin):
    pass
admin.site.register(Alert, AlertAdmin)

【问题讨论】:

【参考方案1】:

grappelli 是这里的关键。

这是相关的问题 #51 (https://github.com/lukaszb/django-guardian/issues/51),已通过 https://github.com/lukaszb/django-guardian/commit/a21b044711266534eaef5e58397d0701ec101058 修复。

很遗憾,我还没有发布新的 django-guardian,所以你可以尝试使用 pip 直接从 github 安装包:

pip install -e git+git://github.com/lukaszb/django-guardian.git@a21b044711266534eaef5e58397d0701ec101058#egg=django-guardian-1.0.4.dev

希望对您有所帮助。

【讨论】:

以上是关于管理员中的 Django Guardian TemplateSyntaxError的主要内容,如果未能解决你的问题,请参考以下文章

使用 Django 和 django-guardian 对象权限的每个对象的组

如何在 Django Guardian 中为用户定义默认权限?

django(权限认证)系统——第三方组件实现Object级别权限控制

Django源码分析之权限系统_擒贼先擒王

django admin实现后台多用户隔离

django 管理站点的两个实例 - 模板