Django: Entfernen Sie die Schaltfläche "View on Site" im Admin User change Formular

8

get_absolute_url () -Methode ist cool, wird aber in einigen Fällen nicht benötigt. django.contrib.auth.models.User hat es standardmäßig gesetzt, dies führt dazu, dass meine Projekte einen defekten Link im Admin haben.

Wie kann ich das verhindern?

In einem meiner alten Projekte habe ich ein benutzerdefiniertes Template erstellt, in dem ich das HTML des Buttons entfernt habe, es hört sich aber nicht nach einer guten Lösung an, die skalieren würde. Alles besser?

    
nemesisdesign 28.12.2011, 23:15
quelle

6 Antworten

1

Dies kann nach Modell ab django 1.7 erfolgen.

%Vor%     
pragmar 20.06.2017, 17:58
quelle
6

Wenn du auf Django 1.7 klickst, sagt dir die Seite, dass "es eine unsichere Version von Django ist, die nicht länger unterstützt wird. Bitte rüste auf eine neuere Version auf!"

Für Django 1.9 funktioniert die folgende Lösung wie in der Django Dokumentation

in myapp / admin.py

%Vor%     
comiventor 01.03.2017 08:53
quelle
4

Anstelle von Affepatch können Sie die Schaltfläche auf der Client-Seite mit JavaScript ausblenden. Der HTML-Code der Schaltfläche "Auf Website anzeigen" sieht folgendermaßen aus:

%Vor%

Wenn Sie das Anchor-Tag einfach ausblenden, erhalten Sie einen Teil des runden Buttons, der so erscheint, wie er auf das li-Tag angewendet wird. Jetzt gibt es leider keine einfache Möglichkeit, css zu verwenden, um dieses spezifische li-Tag auszuwählen, da es keine Klasse, keinen Namen oder keine ID enthält. Also können wir jquery verwenden, was Ihnen mehr Kontrolle über Ihre Selektoren gibt. Legen Sie Folgendes in Ihren statischen Ordner. Zum Beispiel im Verzeichnis static / admin / user_change_form.js

%Vor%

Ihr admin.py könnte dann etwa so aussehen:

%Vor%

AKTUALISIEREN

Ein Feature wurde in Django 1.7 ModelAdmin.view_on_site hinzugefügt , damit Sie den Link "Vor Ort anzeigen" nicht anzeigen können.

    
Marwan Alsabbagh 22.06.2014 10:46
quelle
3

Ich weiß, das ist alt, aber ich bin darauf gestoßen, als ich dasselbe tun musste.

Eine bessere Lösung wäre es, es in einer Datei accounts/admin.py zu patchen, wenn Sie accounts in INSTALLED_APPS haben.

%Vor%     
user1561402 28.08.2012 17:09
quelle
1

Als letzten Ausweg habe ich eine monkey_patch -App am unteren Rand von INSTALLED_APPS , die die eingebauten django contrib-Apps so verändert, dass ich keine besseren Möglichkeiten zur Änderung gefunden habe, wie die Länge des Benutzernamens, Standard-Admin-Formulare , __unicode__ , usw.

Achte nur auf deinen Rücken, wenn du Django / generell aktualisierst.

%Vor%     
Yuji 'Tomita' Tomita 29.12.2011 02:59
quelle
0

Ich benutze Django 1.4 und Marwan Alsabbaghs Lösung hat gut für mich funktioniert. Beim Öffnen / Auffrischen des Formulars für den Benutzerwechsel gab es jedoch ein kurzes Blinken. Das liegt daran, dass JQuery diese Schaltfläche nur ausblendet, wenn die Seite geladen wird.

Um dieses kleine Problem zu lösen, habe ich CSS benutzt, um den gesamten .change-form Block zu verstecken. Nach dem Laden der Seite wird die Sichtbarkeit dieses Blocks mit Hilfe von JQuery wiederhergestellt. Also sieht mein Code so aus:

admin.py:

%Vor%

... statisch / css / admin / user_change_form.css

%Vor%

... statisch / js / admin / user_change_form.js

%Vor%     
Alexandru Oat 16.08.2017 19:52
quelle