Я пытаюсь подклассировать форму входа, чтобы добавить дополнительное поле для входа, но не может его отобразить. Я использую мезонин для проекта.Подклассификация LoginForm
Вот что у меня есть для моего forms.py:
from mezzanine.accounts.forms import LoginForm
from django import forms
CLINICS = (
('', '——–'),
('1', 'Main'),
('2', 'Secondary'),
('3', 'Backend'),
)
class myLoginForm(LoginForm):
clinic_select = forms.ChoiceField(choices=CLINICS)
Это мой views.py:
from django.contrib.auth import (authenticate, login as auth_login,
logout as auth_logout)
from django.contrib.auth.decorators import login_required
from django.contrib.messages import info, error
from django.core.urlresolvers import NoReverseMatch
from django.http import Http404
from django.shortcuts import get_object_or_404, redirect, render
from django.utils.translation import ugettext_lazy as _
from accounts.forms import myLoginForm
from mezzanine.utils.urls import login_redirect
def login(request, template="templates/accounts/account_login.html"):
"""
Login form.
"""
form = myLoginForm(request.POST or None)
if request.method == "POST" and form.is_valid():
authenticated_user = form.save()
info(request, _("Successfully logged in"))
auth_login(request, authenticated_user)
return login_redirect(request)
context = {"form": form, "title": _("CaregoLite Log In")}
return render(request, template, context)
И это мой urls.py:
from django.conf.urls import patterns, include, url
from django.contrib import admin
from mezzanine.core.views import direct_to_template
from django.views.generic.base import View
url("^$", "accounts.views.login", name="home"),
#url("^$", direct_to_template, {"template": "index.html"}, name="home"),
По какой-то причине, хотя я не могу получить эту подклассовую форму для показа. В моем отладке я вижу, что единственный запрос var сделан для mezzanine.accounts.views.login.
Что-то не в порядке с моим кодом?
Спасибо.
Вы проверили, как шаблон выводит форму? Возможно, это поле по полю вместо цикла или as_p. –
Он делает это: {% блок%} Основной
{%}% концевым блоком – Tom@tbonejo Похоже, антресоли использует свой собственный [ 'mezzanine.forms'] (http://mezzanine.jupo.org/docs/ packages.html # module-mezzanine.forms) вместо Django 'django.forms', поэтому вам может понадобиться использовать другой метод для добавления новых полей в формы по умолчанию. – Aya