2012-01-20 9 views

Odpowiedz

8

To są tylko dwie opcje. Masz rację, zmieniając rzeczywisty plik Django będący złym pomysłem, więc jedyną opcją jest załadowanie własnego.

Wersja jQuery programu Django jest już podana jako django.jQuery, więc można załadować własną wersję jQuery z lub bez jQuery.noConflict().

Rozumiem, co czujesz, jeśli chodzi o uruchamianie dwóch wersji jQuery na tej samej stronie, ale to jest strona administratora, a nie Twoja witryna skierowana do użytkowników. To nie jest tak dużo kosztu szybkości ładowania biblioteki dwa razy, ale będzie to nawet dotyczyło tylko użytkowników (lub może tylko ciebie), którzy używają administratora.

+1

+1 Btw, to jest oficjalne wyjaśnienie https: //docs.djangoproject .com/pl/dev/ref/contrib/admin/# modeladmin-media-definicje – Paolo

2

Miałem ten sam problem i odkryłem, że jest kilka sposobów, aby to osiągnąć. Ponieważ szablon bazowy administratora django nie zawiera bezpośrednio jQuery JS (zakodowany w szablonie) i opiera się na strukturze admina, aby go dostarczyć, nie mogę przesłonić go w szablonie. Tak, są inne sposoby -

  1. Dzięki nowej staticfiles aplikacji Django, można zastosować polecenie collectstatic uzyskać wszystkie pliki statyczne w aplikacji (w tym django.contrib.admin). Tutaj możesz ręcznie zastąpić treść. Lepiej jest zastąpić najnowszą wersję jquery-min, ponieważ szablony admina django zawierają nieskompresowane jquery.

  2. Możesz użyć reguły ReWrite na serwerze wdrożonym, aby zawsze wskazywać plik jquery.js na inny adres URL, taki jak jquery.latest.min.js, w którym przechowujesz pojedynczą kopię najnowszej jQuery. Wolałbym tę opcję.

reguły przepisywania są zdefiniowane tutaj:

  1. Apache: http://httpd.apache.org/docs/current/mod/mod_rewrite.html
  2. Nginx: http://wiki.nginx.org/HttpRewriteModule
Powiązane problemy