基于类视图的Loggin django无法正常工作,

时间:2019-07-08 03:52:49

标签: django

我是django的新手,我正在根据udemy课程进行登录,但对我而言不起作用。我的错误是凭据不正确,如果我使用admin启动会话,那么它也不起作用。这是我的代码,希望您能帮助我,谢谢,

如果有任何调试方法可以找到错误,请告诉我

url.py

from django.conf import settings
from django.urls import include, path
from django.conf.urls.static import static
from django.contrib import admin
from django.views.generic import TemplateView
from django.views import defaults as default_views

from tienda.users.views import (
    Indice, ListarProductos, DetalleProducto, ComentarioProducto, Ingresar, Salir, CambiarPerfil
)


urlpatterns = [

    path('', Indice.as_view(), name="indice"),
    path("listado_productos", ListarProductos.as_view(), name="listado_productos"),
    path("detalle_producto/<int:pk>/", DetalleProducto.as_view(), name="detalle_producto"),
    path("crear_comentario/", ComentarioProducto.as_view(), name="crear_comentario"),
    path("ingresar/", Ingresar.as_view(), name="ingresar"),
    path("salir/", Salir.as_view(), name="salir"),
    path("editar_perfil/", CambiarPerfil.as_view(), name="editar_perfil"),

    # Django Admin, use {% url 'admin:index' %}
    path(settings.ADMIN_URL, admin.site.urls),

    # Your stuff: custom urls includes go here
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

views.py

from django.contrib.auth import get_user_model
from django.contrib.auth.mixins import LoginRequiredMixin
from django.urls import reverse
from django.views.generic import DetailView, RedirectView, UpdateView, TemplateView , CreateView, ListView

from django.db.models import Q, Max, Min
from tienda.productos.models import Producto, Comentario
from django.contrib.auth.views import LoginView, LogoutView
from django.http import HttpResponseRedirect
from django.urls import reverse_lazy, reverse

User = get_user_model()


class Indice(TemplateView):
    template_name = 'index.html'


class Salir(LogoutView):
    next_page = reverse_lazy('indice')

class Ingresar(LoginView):
    template_name = "login.html"

    def get(self, request, *args, **kwargs):
        if request.user.is_authenticated:
            return HttpResponseRedirect(reverse('indice'))
        else:
            context = self.get_context_data(**kwargs)
            return  self.render_to_response(context)

    def get_success_url(self):
        return reverse('indice')

login.html

{% extends "base.html" %}

{% block contenido %}


<main>
    <center>
        <div class="section"></div>

        <div class="container">
            <div class="z-depth-1 grey lighten-4 row" style="display: inline-block; padding: 32px 48px 0px 48px; border: 1px solid #EEE; width: 60%;">

                <form class="col s12" action="{% url 'ingresar' %}" method="POST">
                    {% csrf_token %}
                    <div class='row'>
                        <div class="row">
                            <h1>
                                Ingresar
                            </h1>
                        </div>

                        <div class='col s12'>
                            <div class="row">

                                {% if form.errors %}
                                <div class="col s12 m10 l10 offset-m1 offset-l1">
                                    <div class="chip red" style="padding: 5px 5px 5px 5px; width: 100%; height: 50px;">
                                        <i class=" close material-icons right white-text">close</i>
                                        <center>
                                            <h6 class="white-text">Verifique su contraseña o correo electrónico<h6>
                                        </center>
                                        </div>
                                    </div>
                                </div>
                                {% endif %}
                            </div>
                        </div>


                        <div class='row'>
                            <div class='input-field col s12'>
                                <input class='validate login__form' type='email' name='username' id='email' required="required" />
                                <label for='email'>Ingresa tu correo</label>
                                <span class="helper-text">
                                    {% for error in form.email.errors %}
                                    {{ error|escape }} <br>
                                    {% endfor %}
                                </span>
                            </div>
                        </div>

                        <div class='row'>
                            <div class='input-field col s12'>
                                <input class='validate login__form' type='password' name='password' id='password' required="required" />
                                <label for='password'>Ingresa tu contraseña</label>
                                <span class="helper-text">
                                    {% for error in form.password.errors %}
                                    {{ error|escape }} <br>
                                    {% endfor %}
                                </span>
                            </div>
                        </div>
                        <br />
                        <center>
                        <div class='row'>
                            <button type='submit'  class='col s12 btn btn-large waves-effect'>Ingresar</button>
                        </div>
            </center>
        </form>
    </div>
</div>
</center>

<div class="section"></div>
<div class="section"></div>
</main>


{% endblock contenido %}

0 个答案:

没有答案