我是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 %}