Перемещение HTML-форм в Django 2.1 - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть несколько форм для сайта, которые были предварительно написаны.Я должен сохранить их как есть, а не изменять их.

Мне также необходимо переместить их в серверную часть Django 2.1, которая, похоже, имеет встроенную систему генерации форм, которая не отображаетсябыть совместимым с самими формами (IE Сценарии Jinja для форм, по-видимому, автоматически генерируют формы без какого-либо реального выбора в этом вопросе).

Я не могу найти какую-либо документацию о том, как переместить ранее существующие формы вДжанго, и я понятия не имею, как.

Спасибо за помощь.

    <div class="container">
    <form class="form-signin" name="login" action="timesheet">
        <h1 class="h3 mb-3 font-weight-normal">Sign In</h1>
        <label for="inputEmail" class="sr-only">Email address</label>
        <input type="email" id="inputEmail" class="form-control" placeholder="Email address" required autofocus>
        <label for="inputPassword" class="sr-only">Password</label>
        <input type="password" id="inputPassword" class="form-control" placeholder="Password" required>
        <div class="checkbox mb-3">
            <label>
                <input type="checkbox" value="remember-me"> Remember me
            </label>
        </div>
        <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
    </form>
</div>

1 Ответ

0 голосов
/ 26 ноября 2018

Вы правы. У Django есть свой способ обработки форм, но, к счастью, он полностью настраивается.Допустим, у вас есть LoginForm, который вы хотите показать пользователю:

вам нужно будет создать форму в Django, которая представляет поле.Кроме того, с тех пор форма будет аутентифицировать пользователя в вашей системе django, если учетные данные верны, вы должны будете сделать эту форму наследованной от встроенной в Dhengo формы AuthentificationForm: forms.py:

from django.contrib.auth.forms import AuthenticationForm
class EmailAuthenticationForm(AuthenticationForm):
    required_css_class = 'required'
    remember_me = forms.BooleanField(
        required=False,
        label='Remember me for two weeks',
    )

    def clean_username(self):
        """Prevent case-sensitive erros in email/username."""
        return self.cleaned_data['username'].lower()

Далее мы должны предоставить форму пользователю (через html).Поэтому мы создаем представление, которое отображает форму в views.py вашего приложения: views.py:

from forms import EmailAuthentificationForm
def login(request):
    if request.method == 'POST':
        form = EmailAuthenticationForm(request.POST)
        if form.is_valid():
            pass  # does nothing, just trigger the validation
    else:
        form = EmailAuthenticationForm()
    return render(request, 'login.html', {'form': form})

теперь, чтобы упростить нашу жизнь, django может автоматически визуализировать форму дляВы без какого-либо стиля просто чтобы все заработало.Но так как у нас есть собственный html-макет с нашими собственными стилями, мы хотим отрисовать форму вручную: login.html

<div class="container">
<form method="post" class="form-signin" name="login" action="timesheet" novalidate>
    {% csrf_token %}


    {{ form.non_field_errors }}

    {{ form.source.errors }}
    {{ form.source }}

    <h1 class="h3 mb-3 font-weight-normal">Sign In</h1>
    <label for="inputEmail" class="sr-only">Email address</label>
    {{form.email}} 
    <label for="inputPassword" class="sr-only">Password</label>
   {{form.password}}
    <div class="checkbox mb-3">
        <label>
           {{form.remember_me}}
        </label>
    </div>
    <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
</form>

теперь электронная почтаи поле пароля по-прежнему не будет отображаться со всеми атрибутами css, которые вы хотели бы иметь в полях, чтобы сделать это, вам необходимо добавить дополнительные атрибуты к вашим полям электронной почты и пароля в форме аутентификации.Чтобы узнать, как это сделать, прочитайте больше здесь Чтобы узнать больше о рендеринге вашей собственной пользовательской формы в django, прочитайте здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...