
How does wagtail build forms
track login
url: wagtail/admin/urls/init.py
url(r'^login/$', account.login, name='wagtailadmin_login')
views: wagtail/admin/views/account.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
from django.contrib.auth import views as auth_views # building login form def get_user_login_form(): form_setting = 'WAGTAILADMIN_USER_LOGIN_FORM' if hasattr(settings, form_setting): return get_custom_form(form_setting) else: return forms.LoginForm from wagtail.utils.loading import get_custom_form # forms from wagtail.admin import forms class LoginForm(AuthenticationForm): username = forms.CharField( max_length=254, widget=forms.TextInput(attrs={'tabindex': '1'})) password = forms.CharField( widget=forms.PasswordInput(attrs={ 'tabindex': '2', 'placeholder': ugettext_lazy("Enter password"), })) def __init__(self, request=None, *args, **kwargs): super().__init__(request=request, *args, **kwargs) self.fields['username'].widget.attrs['placeholder'] = ( ugettext_lazy("Enter your %s") % self.username_field.verbose_name) @property def extra_fields(self): for field_name, field in self.fields.items(): if field_name not in ['username', 'password']: yield field_name, field @sensitive_post_parameters() @never_cache def login(request): ... from django.contrib.auth import get_user_model return auth_views.login( request, template_name='wagtailadmin/login.html', authentication_form=get_user_login_form(), extra_context={ 'show_password_reset': password_reset_enabled(), 'username_field': get_user_model().USERNAME_FIELD, }, ) |
templates: wagtailadmin/login.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
<form action="{% url 'wagtailadmin_login' %}" method="post" autocomplete="off" novalidate> {% block login_form %} {% csrf_token %} {% url 'wagtailadmin_home' as home_url %} <input type="hidden" name="next" value="{{ next|default:home_url }}" /> <h1>{% block branding_login %}{% trans "Sign in to Wagtail" %}{% endblock %}</h1> <ul class="fields"> {% block fields %} <li class="full"> <div class="field iconfield"> {{ form.username.label_tag }} <div class="input icon-user"> {{ form.username }} </div> </div> </li> <li class="full"> <div class="field iconfield"> {{ form.password.label_tag }} <div class="input icon-password"> {{ form.password }} </div> </div> {% if show_password_reset %} <p class="help"><a href="{% url 'wagtailadmin_password_reset' %}"> {% trans "Forgotten it?" %}</a></p> {% endif %} </li> {% block extra_fields %} {% for field_name, field in form.extra_fields %}gs <li class="full"> {{ field.label_tag }} <div class="field iconfield"> {{ field }} </div> </li> {% endfor %} {% endblock extra_fields %} {% comment %} Removed until functionality exists <li class="checkbox"> <div class="field"> <label><input type="checkbox" />{% trans "Remember me" %}</label> </div> </li> {% endcomment %} {% endblock %} <li class="submit"> {% block submit_buttons %} <button type="submit" class="button button-longrunning" tabindex="3" data-clicked-text="{% trans 'Signing in…' %}"> <span class="icon icon-spinner"></span> <em>{% trans 'Sign in' %}</em> </button> {% endblock %} </li> </ul> {% endblock %} </form> |




近期评论