Django-grappelli: لا تعمل قائمة التصفية المنسدلة بسبب خطأ Javascript في Chrome ، FF

تم إنشاؤها على ١ أغسطس ٢٠١١  ·  31تعليقات  ·  مصدر: sehmaschine/django-grappelli

لقد قمت للتو بتثبيت django-grappelli 2.3.4 بالاشتراك مع Django 1.4.0 alpha. كل شيء على ما يرام ، باستثناء مربع التصفية المنسدل في صفحة قائمة التغيير. يبلغ 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

جزء التعليمات البرمجية ذي الصلة موجود في قوالب / admin / change_list.html. يبدو أن الإصلاح يحرك الكتلة

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

من السطر 19 نزولاً إلى السطر 65 ، مباشرة بعد {{ media.js }} . أعتقد أن هذا بسبب تحميل البرنامج النصي actions.js في الكتلة المضمنة بواسطة media.js ، والذي يأتي بعد_ كود Javascript ذي الصلة.

لست متأكدًا مما إذا كان هذا نتيجة لأن كود Django لا يزال في ألفا ، لكنني أحسب أنني سأبلغ عنه.

حدث خطأ آخر في نفس الوقت بمقدار grp_collapsible في templates/admin/includes_grappelli/header.html :

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

لا أعرف كيفية إصلاح هذا ، رغم ذلك.

التعليق الأكثر فائدة

بالنسبة لي المشكلة لا تزال موجودة.
بيثون 2.7 ، جانغو 1.9.6 ، جرابيلي 2.8.1

ال 31 كومينتر

هل جربت django 1.3؟

لا آسف. فقط 1.4.0a. أنا مترنح قليلاً ، لكنني أعتقد أنه في الغالب
شيء رائع: قائمة تغيير النموذج وترتيب
تحميل / تنفيذ كود جافا سكريبت.

ربما كنت متسرعًا بعض الشيء في تقديم التقرير ، ولم أكن صارمًا
يكفي في الاختبار مع إصدارات django المختلفة - معذرة!

بصراحة ... لا أعتقد أنه خطأ خطير. وإلا فلن يتمكن مئات المستخدمين من استخدام قائمة التصفية المنسدلة ولا أعتقد أن هذا هو الحال. أنا متأكد من أنها بسبب 1.4.0a ... ودائمًا ما يتم تطوير Grappelli مقابل أحدث إصدار رسمي.

يمكنني أن أؤكد أن هذا هو الحال - لم تعمل قائمة المرشح المنسدلة مع django-trunk لبعض الوقت. لم أتطرق إلى قوالب Grappelli حتى الآن لنقل الكود كما اقترح swashbuckler.

إذا تم تحديث Grappelli مع django-trunk ، فهذه مشكلة يجب النظر فيها عن كثب. أظن أن الأمر يتعلق بنقل وسائط Django 1.4 إلى STATIC_URL وإيقاف ADMIN_MEDIA_PREFIX.

إذا قرأت تعليقي الأخير ، فسترى أن Grappelli لم يتم تطويره باستخدام جذع djangos.

آسف ، قرأته بسرعة كبيرة :)

أنا أقوم بإغلاق هذه التذكرة لأنها تتعلق بإصدار صندوق djangos. تم تحديث المستندات وتمت إضافة ملاحظة تفيد بأن grappelli دائمًا ما يتم تطويره مقابل أحدث إصدار مستقر من django.

يبدو أن هذه المشكلة استمرت مع إصدار 1.4 قبل بضعة أيام. أي فرصة هذا يمكن إصلاحه؟

بالطبع ، سيتم إصلاحه بمجرد توافق grappelli مع django 1.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

في المرة الأخيرة التي تحققت فيها من الفرع ، كانت هناك مشكلات كبيرة في الترميز ، مما جعل معظمها غير قابل للاستخدام في الأعمال :(

قبض عليه مع django 1.4.2 و grappelli 2.4.3

استخدام Grappelli 2.4.3 + Django 1.4.3 مع Firefox 17 ووجود رسالة الخطأ هذه على الصفحة التي تحتوي على عوامل تصفية:

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 ... لدينا بالفعل هذه المشكلة مع بطاقة أخرى واتضح أنها مشكلة في الإعداد. هل أنت متأكد من تحميل ملفات جافا سكريبت بشكل صحيح؟

sehmaschine لقد قمت بتحديث تعليقي (باستخدام مساحة الاسم "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 = صحيحًا ، يبدو أن كل شيء على ما يرام. هل لاحظت vongesell ذلك أيضًا؟ هل تمكن أي منكما من إصلاحه؟

أوه نعم ، نفس الإصدار من Django و Chrome ، وأنا أستخدم grappelli 2.4.4.

نفس المشكلة ، Django == 1.5 ، django-grappelli == 2.4.4 ، Firefox 22.0 على Ubuntu. إخراج وحدة التحكم في Firebug:

TypeError: $ (...). الإجراءات ليست دالة
[كسر عند هذا الخطأ]

$ ("tr input.action-select"). Actions () ؛

/api/a...kstate/ (السطر 55)

نراه هنا أيضًا. في حالتي ، لم يتم نسخ إصدار Grappelli لـ actions.js إلى /static/admin/js/ بواسطة collectstatic . كل ما كان علي فعله هو نسخه يدويًا وكل شيء يعمل. واجهت نفس المشكلة مع prepopulate.js .

bjudson شكرا للتلميح. بالنسبة لي ، اتضح أن Collectstatic لم ينسخ كل شيء. قمت بتشغيله مرة أخرى والآن كل شيء يعمل.

نفس المشكلة مع Django 1.6 و Grappelli 2.5.0. الترقيع ../grappelli/templates/admin/change_list.html مثل المعاد تكوينه بواسطة Vinyll يعمل على إصلاح مشاكلي.

جانغو == 1.8.2
django-grappelli == 2.7.1

لا تزال المشكلة قائمة ، لم يعثر collectstatic على مجلد grappellis admin / static لسبب ما.

جانغو == 1.8.3
django-grappelli == 2.7.3

لا تزال المشكلة هنا بالنسبة لي

~ django.contrib.admin.options.ModelAdmin # media: 635
إذا لم تكن التصرفات الذاتية بلا شيء:
js.append ('الإجراءات٪ s.js'٪ إضافية)

إذا فعلت شيئًا في فئة فرعية ModelAdmin يمنع استدعاء هذه الطريقة (الخاصية) ، مثل إعادة تعريف خاصية الوسائط دون استدعاء هذه الخاصية الممتازة ، فلن يتم تحميل الإجراءات. ولا تحصل أيضًا على ميزة التمديد لـ Form.media. لذلك ، حتى إذا حاولت وضع الإجراءات في صفك Media في الفئة الفرعية ، فلن يتم العثور عليه.

لذلك ، ضع نقطة فحص في هذه الطريقة وتأكد من استدعائها.

واجهت نفس المشكلة وقمت بحلها عن طريق تحرير تهيئة nginx.
قبل:
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/; }

بالنسبة لي المشكلة لا تزال موجودة.
بيثون 2.7 ، جانغو 1.9.6 ، جرابيلي 2.8.1

لحل المشكلة كنت بحاجة إلى التعليق على / static / admin / block في ملف التكوين nginx الخاص بالموقع (كما قال gameot ) ؛ مثله:

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

يمكنني حذفه بالطبع! يبدو فقط أنه عديم الفائدة عند استخدام grappelli.

بعد ذلك ، قم بعمل Collectstatic كما تقول مستندات grappelli: python manager.py collectionstatic
ثم أعد تشغيل nginx.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

bob-r picture bob-r  ·  9تعليقات

asfaltboy picture asfaltboy  ·  11تعليقات

johncpang picture johncpang  ·  4تعليقات

adamchainz picture adamchainz  ·  24تعليقات

FrozenAlex picture FrozenAlex  ·  15تعليقات