在Google App Engine上使用Django / Grappelli会导致管理员列表视图出现Javascript错误

时间:2013-01-08 13:19:48

标签: django google-app-engine django-grappelli

我已将我的Django应用程序部署到Google App Engine。它在管理员应用程序中使用grappelli以获得额外的惊人效果,虽然它看起来运行正常但是有一个巨大的绊脚石,我似乎无法摆脱它。提到的问题为here,并在管理员应用中的列表视图中显示。从列表中选择模型并对它们执行任何预定义的操作是不可能的。

在管理员应用中的所有列表视图中,我收到一个Javascript错误:

Uncaught TypeError: Object [object Object] has no method 'actions'

发现它来自以下Javascript代码片段:

    <script type="text/javascript" charset="utf-8">
        (function($) {
            $(document).ready(function() {
                $("tr input.action-select").actions();
            });
        })(grp.jQuery);
    </script>

我做过的事情:

  • 我通过将包添加到我的Django应用程序来部署grappelli。
  • 我在STATIC_ROOT添加了settings.py和STATIC_URL条目。
  • 我在部署之前运行manage.py collecstatic来收集静态文件。现在,所有静态文件都位于应用程序根目录中的静态目录中,如settings.py中所述。
  • 我检查了生成的页面源,看起来所有必需的Javascript库都是从各自的静态目录中正确包含的。我通过将生成的页面源与本地运行版本(没有此问题)进行比较来仔细检查,并且它们完全相同。
  • 我清除了浏览器缓存。

问题很可能是由我的配置引起的 - 因为我的本地机器上的应用程序完美无瑕 - 但我找不到任何错误。关于如何解决这个问题的任何想法?

编辑:只是为了完成,我使用Django 1.4grappelli 2.4Google Cloud SQL上运行

2 个答案:

答案 0 :(得分:1)

这仍然是一个谜,我无法解决它,但是评论中描述的方式。根据Github的问题清单,对于没有明确解决方案的几个用户来说这是一个问题。

答案 1 :(得分:0)

从查看此票证:https://github.com/sehmaschine/django-grappelli/issues/214

通过在如下设置中更改staticfiles_finders的顺序,您的问题可以解决:

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'django.contrib.staticfiles.finders.FileSystemFinder',
 )

我没有注意到的是他们必须按照这个顺序。

清除缓存等后,它开始为我工作。