Django - Remplacer admin du site formulaire de connexion
Je suis en train d'essayer de remplacer le formulaire par défaut utilisé dans Django 1.4 lors de la connexion à l'admin du site (mon site utilise un 'jeton' champ requis pour les utilisateurs qui optent pour l'Authentification à Deux facteurs, et est obligatoire pour le personnel de site). Django du formulaire par défaut ne prend pas en charge ce dont j'ai besoin. Actuellement, j'ai un fichier dans mon templates/
répertoire appelé templates/admin/login.html
, ce qui semble être correctement substituant le modèle utilisé avec celui que j'utilise tout le reste de mon site. Le contenu du fichier est simplement comme ci-dessous:
# admin/login.html:
{% extends "login.html" %}
Le réel formulaire de connexion ci-dessous:
# login.html:
{% load url from future %}<!DOCTYPE html>
<html>
<head>
<title>Please log in</title>
</head>
<body>
<div id="loginform">
<form method="post" action="{% url 'id.views.auth' %}">
{% csrf_token %}
<input type="hidden" name="next" value="{{ next }}" />
{{ form.username.label_tag }}<br/>
{{ form.username }}<br/>
{{ form.password.label_tag }}<br/>
{{ form.password }}<br/>
{{ form.token.label_tag }}<br/>
{{ form.token }}<br/>
<input type="submit" value="Log In" />
</form>
</div>
</body>
</html>
Mon problème est que le formulaire fonctionne parfaitement bien lors de l'accès à l'aide de mon Url de connexion car j'ai ma propre AuthenticationForm
le formulaire à l'écran, mais à travers le Django Admin login route, Django aime alimentation c'est une forme propre à ce modèle et donc que le username
et password
champs de rendu. Est-il possible que je peux faire ce travail, ou est-ce quelque chose que je suis juste mieux loti "codage en dur" les champs HTML dans le formulaire?
OriginalL'auteur TC Fox | 2012-07-05
Vous devez vous connecter pour publier un commentaire.
AdminSite
a unlogin_form
attribut que vous pouvez utiliser pour remplacer la forme utilisée.Sous-classe
AdminSite
et ensuite utiliser une instance de votre sous-classe au lieu dedjango.contrib.admin.site
pour enregistrer vos modèles dans l'admin, dans urls.py, etc.Tout est dans le la documentation.
OriginalL'auteur Chris Pratt
Holá
J'ai trouvé une solution très simple.
Vous avez juste besoin de modifier le urls.py fle du projet (note, et non pas l'application d'un)
from your_app_name import views
url(r'^admin/', include(admin.site.urls))
url(r'^admin/login/', views.your_login_view),
C'est un exemple
OriginalL'auteur ePi272314
Ce code dans
urls.py
fonctionne très bien pour moi (Django version 1.5.1):Juste pour compléter cette réponse: si vous êtes en quelque sorte modifier les champs du formulaire, vous aurez également besoin de remplacer la
admin/login.html
modèle, généralement substitution de la{% block content %}
.OriginalL'auteur dgk
Je sais que c'est un vieux thread, mais je voulais ajouter quelque chose, il m'a aidé à trouver, dans le cas où il peut aider les autres.
Je suis à l'aide d'une télécommande auth (Shibboleth) et en remplaçant l'admin login_form ne serait pas assez. J'ai vue que des ensembles de cookies et de retourner les variables et les redirige vers la télécommande auth fournisseur, etc.
Donc la façon dont je l'ai fait, c'était:
Fonctionne très bien!
Grâce à @dgk
OriginalL'auteur Rob L
Peut-être utiliser un templatetag pour obtenir votre coutume
AuthenticationForm
?OriginalL'auteur scytale