2012-01-20 22 views

risposta

8

Queste sono le tue uniche due opzioni. Hai ragione a cambiare l'attuale file Django come una cattiva idea, quindi l'unica altra opzione è quella di caricare il tuo oltre a quello.

La versione Django di jQuery è già denominata come django.jQuery, quindi è possibile caricare la propria versione di jQuery con o senza jQuery.noConflict().

Capisco i tuoi sentimenti verso l'esecuzione di due versioni di jQuery sulla stessa pagina, ma questo è il sito di amministrazione, non il tuo sito web rivolto all'utente. Non è tanto il costo di una velocità che carica la libreria due volte, ma sarà persino applicabile al gestore degli utenti (o forse solo a te stesso) che usano l'amministratore.

+1

+1 Btw, questa è la spiegazione ufficiale https: //docs.djangoproject .com/it/dev/REF/contrib/admin/# ModelAdmin-media-definizioni – Paolo

2

Ho avuto lo stesso problema e ho scoperto che ci sono alcuni modi per raggiungerlo. Dato che il template di base di admin di django non include direttamente jQuery JS (hardcoded nel template) e si affida al framework di amministrazione per fornirlo, non posso sovrascriverlo nel template. Così, gli altri modi possibili sono -

  1. Con la nuova staticfiles app Django, è possibile applicare il comando collectstatic per ottenere tutti i file statici in app (compresi django.contrib.admin). È possibile sovrascrivere manualmente il contenuto qui. Sarebbe meglio sovrascrivere l'ultima versione jquery-min poiché i modelli di amministrazione di django includono il jQuery non compresso.

  2. È possibile utilizzare la regola ReWrite sul server distribuito per indirizzare sempre jquery.js su un altro url come jquery.latest.min.js in cui viene mantenuta una singola copia dell'ultimo jQuery minificato. Preferirei questa opzione.

regole di riscrittura sono definite qui:

  1. Apache: http://httpd.apache.org/docs/current/mod/mod_rewrite.html
  2. Nginx: http://wiki.nginx.org/HttpRewriteModule
Problemi correlati