Django-grappelli: Chrome、FFのJavascriptエラーが原因で、フィルタードロップダウンが機能しない

作成日 2011年08月01日  ·  31コメント  ·  ソース: sehmaschine/django-grappelli

django-grappelli2.3.4をDjango1.4.0alphaと組み合わせてインストールしました。 変更リストページのフィルタードロップダウンボックスを除いて、すべて問題ありません。 ChromeとFirefoxはJavascriptエラーを報告します:

Uncaught TypeError: Object #<Object> has no method 'actions'
(anonymous function):8000/admin/msdb/incident/:59
c.extend.readyjquery-1.4.2.min.js:26
L

関連するコードはtemplates/admin/change_list.htmlにあります。 修正はブロックを動かしているようです

{% if action_form %}
  ...
{% endif %}

{{ media.js }}の直後の19行目から65行目まで。 これは、 actions.jsスクリプトがmedia.jsに含まれるブロックにロードされているためだと思います。これは、関連するJavascriptコードの_後_にあります。

これがDjangoコードがまだアルファ版である結果であるかどうかはわかりませんが、報告すると思いました。

templates/admin/includes_grappelli/header.htmlgrp_collapsibleによって同時に発生する別のエラー:

Uncaught TypeError: Object #<Object> has no method 'grp_collapsible'

ただし、これを修正する方法がわかりません。

最も参考になるコメント

私にとって問題はまだ存在しています。
python 2.7、django 1.9.6、grappelli 2.8.1

全てのコメント31件

django 1.3で試しましたか?

いいえ、ごめんなさい。 ちょうど1.4.0a。 私は少し不機嫌ですが、それはほとんどだと思います
grappelliのもの:テンプレートchange_listとの順序
Javascriptコードのロード/実行。

私は報告書を提出するのに少し急いでいて、厳密ではなかったかもしれません
さまざまなdjangoバージョンでのテストで十分です-お詫びします!

正直なところ...私はそれがgrappelli-errorだとは思わない。 そうしないと、何百人ものユーザーがフィルタードロップダウンを使用できなくなり、そうではないと思います。 1.4.0aのせいであると確信しています...そしてgrappelliは常に最新の公式リリースに対して開発されています。

私はそれが事実であることを確認できます-フィルタードロップダウンはかなり長い間django-trunkで機能していませんでした。 swashbucklerが提案したように、コードを移動するためにGrappelliテンプレートにはまだ触れていません。

Grappelliがdjango-trunkで最新の状態に保たれている場合、それはより綿密に検討されるべき問題です。 Django 1.4がcontrib.adminメディアをSTATIC_URLに移動し、ADMIN_MEDIA_PREFIXを廃止することに関係しているのではないかと思います。

私の最後のコメントを読むと、grappelliがdjangosトランクで開発されていないことがわかります。

申し訳ありませんが、私はそれをあまりにも速く読みました:)

djangosトランクバージョンに関連しているので、このチケットを閉じます。 ドキュメントが更新され、grappelliは常に最新の安定したdjangoリリースに対して開発されているというメモが追加されました。

この問題は、数日前にリリースされた1.4でも解決しないようです。 これが修正される可能性はありますか?

もちろん、grappelliがdjango1.4と互換性があると修正されます

django1.4を使用している人のための回避策はありますか?

ここで見つけました:http: //groups.google.com/group/django-grappelli/browse_thread/thread/7b929047d316275f

しかし、それを試していません。

django1.4を使用している場合は、grappelli_2_4ブランチを使用してください。

cd ../lib/python2.7/site-packages
git init django-grappelli
cd django-grappelli
git remote add --track grappelli_2_4 grappelli_2_4 https://github.com/sehmaschine/django-grappelli.git
git fetch grappelli_2_4
git checkout grappelli_2_4
python setup.py install

前回ブランチをチェックしたとき、マークアップに大きな問題があり、そのほとんどがビジネスで使用できなくなりました:(

django1.4.2とgrappelli2.4.3でキャッチ

Firefox17でGrappelli2.4.3+ Django 1.4.3を使用し、フィルターのあるページにこのエラーメッセージが表示される:

TypeError: $(...).actions is not a function
$("tr input.action-select").actions();

ページネーションバーが壊れた-フィルターが開かずにリストの一番上に移動しました(添付の画像を参照)。

キャッシュをクリアしても効果はありません。

Capture d e cran 2013-01-04 a 11 50 42

私の場合、使用されているjqueryは適切ではないようです(複数のバージョンがインポートされ、スクリプトはデフォルトではなく「grp.jQuery」を使用します)。
次のコードで、テンプレートをオーバーライドし、「grp.jQuery」を「django.jQuery」に置き換えることで修正されました。

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

その結果、次のコードが生成されます。

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

grp.jQueryが存在する必要があります。そうでない場合、jsは機能しません...別のチケットですでにその問題が発生しており、セットアップの問題であることが判明しました。 javascriptファイルが正しくロードされていることを確認しますか?

@sehmaschineコメントを更新しました(noneの代わりに "django.jQuery"名前空間を使用)。
grp.jQueryは実際には1.7.2ですが、django.jQueryは1.4.2です。 adminとgrappelliではセットアップをあまりカスタマイズしませんでした。 どういうわけかいくつかの構成設定を見逃したかもしれませんが、何をどこで理解することができません。

詳細については、失敗したソースファイルを次に示します。 そして、「grp.jQuery」を「django.jQuery」に変更すると解決する場所: https ://gist.github.com/4452470

すべてチェックボックス( )現在動作しています。

grp.jQueryが存在しない理由を確認できますか? あるべきだからです。 前述のように、grp.jQueryが存在しない場合、多くのものが期待どおりに機能しません。

これと同じ問題が発生しています(Django 1.5、Chrome 26)。 問題の行( $("tr input.action-select").actions(); )を壊すと、grp.jQueryがあり、 actions()メソッドがありません。

ack。 defrexと同じ問題

私はあなたと同じもの、 @ defrexを見ていますが、actions.min.jsがロードされている場合のみです。 DEBUG = Trueの場合、すべてが正常に見えます。 あなたの@vongesellもそれに気づきましたか? あなたのどちらかがそれを修正することができましたか?

はい、同じバージョンのDjangoとChromeで、grappelli2.4.4を使用しています。

同じ問題、Django == 1.5、django-grappelli == 2.4.4、Ubuntu上のFirefox22.0。 Firebugコンソールの出力:

TypeError:$(...)。actionsは関数ではありません
[このエラーの中断]

$( "tr input.action-select")。actions();

/ api / a ... kstate /(55行目)

こちらもご覧ください。 私の場合、 actions.js collectstatic /static/admin/js/にコピーされませんでした。 私がしなければならなかったのはそれを手動でコピーすることだけで、すべてが機能します。 prepopulate.jsでも同じ問題が発生しました。

@bjudsonヒントをありがとう。 私にとって、collectstaticはすべてをコピーしなかったことがわかりました。 もう一度実行すると、すべてが機能します。

Django1.6とGrappelli2.5.0でも同じ問題が発生します。 Vinyllによって推奨されているように../grappelli/templates/admin/change_list.htmlにパッチを適用すると、問題が修正されます。

Django == 1.8.2
django-grappelli == 2.7.1

それでも問題は解決しません。collectstaticが何らかの理由でgrappellisadmin/staticフォルダーを見つけられません。

Django == 1.8.3
django-grappelli == 2.7.3

私にとってまだここに問題があります

〜django.contrib.admin.options.ModelAdmin# media:635
self.actionsがNoneでない場合:
js.append('actions%s.js'%extra)

このスーパープロパティを呼び出さずにメディアプロパティを再定義するなど、このメソッド(プロパティ)が呼び出されないようにするModelAdminサブクラスで何かを行うと、アクションが読み込まれません。 また、Form.mediaの拡張機能も利用できません。 したがって、サブクラスのクラスMediaにアクションを配置しようとしても、それは見つかりません。

したがって、そのメソッドにチェックポイントを設定し、呼び出されていることを確認します。

同じ問題が発生し、nginxconfigを編集して解決しました。
前:
location /static/admin/ { alias /web/merv/env/lib/python3.4/site-packages/django/contrib/admin/static/admin/; }
location /static/ { alias /web/merv/files/static/; }
後:
location /static/ { alias /web/merv/files/static/; }

私にとって問題はまだ存在しています。
python 2.7、django 1.9.6、grappelli 2.8.1

問題を解決するために、Webサイトのnginx構成ファイルの/ static / admin /ブロックにコメントを付ける必要がありました( @gameotが言ったように)。 このような:

#location /static/admin/ {
#   alias /home/mohsen/virtualenvs/django-1.9/lib/python3.4/site-packages/django/contrib/admin/static/admin/;
#}

もちろん削除できます! grappelliを使用する場合は役に立たないようです。

その後、grappelli docsが言うように、collectstaticを実行します:python manage.py collectstatic
次に、nginxを再起動します。

このページは役に立ちましたか?
0 / 5 - 0 評価