Использование формы входа в Bootstrap 4 с django UserForm - PullRequest
0 голосов
/ 24 сентября 2018

Эй, я хочу использовать вид входа Bootstrap с моей пользовательской формой, но у меня возникло несколько проблем.

Это шаблон:

<body class="text-center">
<form class="form-signin" action="" method="post">
    {% csrf_token %}
        <img class="mb-4" src="../../assets/brand/bootstrap-solid.svg" alt="" width="72" height="72">
        <h1 class="h3 mb-3 font-weight-normal">Please sign in</h1>
        <label for="form.id_username" class="sr-only">Email address</label>
        <input type="text" id="form.id_username" class="form-control" placeholder="Email address" required autofocus>
        <label for="form.id_password" class="sr-only">Password</label>
        <input type="password" id="form.id_password" class="form-control" placeholder="Password" required>
        <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
        <p class="mt-5 mb-3 text-muted">&copy; 2017-2018</p>
</form>
</body>

Моя пользовательская форма: из django.contrib.auth.models import User из форм импорта django

class UserForm(forms.ModelForm):
    password =forms.CharField(widget=forms.PasswordInput)

    class Meta:
        model = User
        fields =['username','password']

и мои views.py:

class LoginView(View):
    template_name = 'accounts/login_form.html'
    form_class = UserForm
    def get(self, request):
        form = self.form_class(None)
        return render(request, self.template_name, {'form':form})
    def post(self, request):
        form =self.form_class(request.POST)
        user = authenticate(username =request.POST['username'],password=request.POST['password'])
        if user is not None:
            if user.is_active:
                login(request, user)
                return redirect('travel:main')
            form=self.form_class(None)
            return render(request, self.template_name,{'form':form})
def logout_view(request):
    logout(request)
    return redirect('travel:main')

Я в основном хочу аутентифицировать ввод из <input type="text" id="form.id_username" class="form-control" placeholder="Email address" required autofocus> для имени form.username и вводаот <input type="password" id="form.id_password" class="form-control" placeholder="Password" required> против пароля формы.Знаете ли вы, где проблема?

1 Ответ

0 голосов
/ 24 сентября 2018

Вы должны исправить синтаксические ошибки в приведенном выше случае.В формах мы должны предоставить имена для полей ввода / текста / радио.

forms.py

class UserForm(forms.ModelForm):
  password = forms.CharField(widget=forms.PasswordInput)
  username = forms.EmailField()

  class Meta:
    model = User
    fields =['username','password']

template.html

<body class="text-center">
<form class="form-signin" action="" method="post">
    {% csrf_token %}
        <img class="mb-4" src="../../assets/brand/bootstrap-solid.svg" alt="" width="72" height="72">
        <h1 class="h3 mb-3 font-weight-normal">Please sign in</h1>
        <label for="form.id_username" class="sr-only">Email address</label>
        <input type="text" id="form.id_username" class="form-control" name="{{ form.username.html_name}}" placeholder="Email address" required autofocus>
        <label for="form.id_password" class="sr-only">Password</label>
        <input type="password" id="form.id_password" class="form-control" placeholder="Password" required name="{{ form.password.html_name}}">
        <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
        <p class="mt-5 mb-3 text-muted">&copy; 2017-2018</p>
</form>
</body>
...