BOOTSTRAP Войти шаблон не работает на FORM - PullRequest
0 голосов
/ 01 июня 2018

Моя страница входа выглядит не так, как я хочу, и похожа на страницу входа начальной загрузки прямо здесь https://getbootstrap.com/docs/4.0/examples/sign-in/. Это то, как она выглядит сейчас

Если вы можете помочь мне с этим, это будет означать мир для меня .

Также, если вы думаете, что это потому, что я не ссылался на страницу CSS, вот что моя базашаблон выглядит так и моя структура:

{% load staticfiles %}

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>Accounts</title>

    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <link rel="stylesheet" type="text/css" href="{% static 'accounts/signin.css' %}" />
</head>

<body>


    <div class="jumbotron">
        <div class="container">

            {% block main_content %} 
            {% endblock %} 
        </div>
    </div>

</body>

</html>

views.py

from django.contrib.auth import (
      authenticate,
      get_user_model,
      login,
      logout,
 )
from django.shortcuts import render
from django.http import HttpResponse,HttpResponseRedirect
from .forms import UserLoginForm

# Create your views here.
def login_view(request):
    title = "Login"
    form = UserLoginForm(request.POST or None)
    if form.is_valid():
        username = form.cleaned_data.get("username")
        password = form.cleaned_data.get('password')
        user = authenticate(request, username=username, password=password)      
        if user is not None:
          login(request, user)
          # or any other success page
        #   return HttpResponse("Logged in")
        return HttpResponseRedirect('accounts/home')
    return render(request, "accounts/form.html", {"form":form, "title": title})

forms.py

from django import forms
from django.contrib.auth import (
    authenticate,
    get_user_model,
    login,
    logout,

    )

User = get_user_model()

class UserLoginForm(forms.Form):
    username = forms.CharField()
    password = forms.CharField(widget=forms.PasswordInput) 

    class Meta: 
        model = User 
        fields = ('username', 'email', 'password')

    def clean(self,*args,**kwargs):
        username = self.cleaned_data.get("username")
        password = self.cleaned_data.get("password")
        user = authenticate(username=username,password=password)
        if not user:
            raise forms.ValidationError("This user does not exist")
        if not user.check_password(password):
            raise forms.ValidationError("Incorrect Password")
        if not user.is_active:
            raise forms.ValidationError("This user is no longer active.")
        return super(UserLoginForm, self).clean(*args,**kwargs)

form.html (в настоящее время используется для входа в систему,открыт для использования того же формата для регистрации)

{% extends 'accounts/base.html' %}
{% block main_content %}
    <div class="container">
        <div class='col-sm-6 col-sm-offset-3'>
        <h1>{{ title }}</h1>
        <form method='POST' action='' enctype='multipart/form-data'>{% csrf_token %}
            {{ form }}
            <input type='submit' class='btn btn-primary btn-block' value='{{ title }}' />
        </form>
    </div>
    </div>
{% endblock %}

Как выглядит моя структура

Большое спасибо

@ Lemayzeur это как выглядит мой сайт сейчас

И это , как я хочу, чтобы он выглядел

- это довольно близко, но, к сожалению, это не то же самое.Тем не менее, я буду держать это и поблагодарить вас.

1 Ответ

0 голосов
/ 01 июня 2018

Ваш CSS-файл работает хорошо, потому что кнопка наследует дизайн начальной загрузки, проблема в том, что все входные данные, которые у вас есть, не имеют класса form-control.Таким образом, чтобы добавить эти классы, вы можете сделать это с помощью виджета

class UserLoginForm(forms.Form):
    username = forms.CharField(max_length=120,
         widget=forms.TextInput(attrs={'class':'form-control',"placeholder":"Username"}))
    password = forms.CharField(max_length=100,
          widget=forms.PasswordInput(attrs={'class':'form-control',"placeholder":"Password"})) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...