0

Добрый день: Я вижу эту ошибку Django, когда я пытаюсь обновить «Новичок»:Ошибка Страница не найдена (404) Запрос Метод: t GET в Django

Page not found (404) 
    Request Method: GET 
    Request URL: http://127.0.0.1:8000/usuarios/modificar/ 
Using the URLconf defined in COMBOOK.urls, Django tried these URL patterns in this order: 
^ ^$ [name='login'] 
^ ^cerrar/$ [name='logout'] 
^ ^registrarse/$ [name='registrarse'] 
^autor/ 
^libros/ 
^usuarios/ ^registrar/$ [name='registrar_usuario'] 
^usuarios/ ^reportar/$ [name='reportar_usuario'] 
^usuarios/ ^modificar/(?P<email>\d+)/$ [name='modificar-usuario'] 
^tipos_usuario/ 
^admin/ 
^media/(?P<path>.*)$ 
The current URL, usuarios/modificar/, didn't match any of these. 

Этот файл models.py

from django.db import models 
from apps.tipos_usuario.models import Tipo_Usuario 


class Usuario(models.Model): 
    email = models.CharField(max_length = 80, verbose_name = 'Email', unique = True) 
    contrasena = models.CharField(max_length = 50, verbose_name = 'Contrasena') 
    nombres = models.CharField(max_length = 80, verbose_name = 'Nombres') 
    apellidos = models.CharField(max_length = 80, verbose_name = 'Apellidos') 

    opciones_genero = (
     ('F', 'F',), 
     ('M', 'M',), 
    ) 

    genero = models.CharField(max_length = 1, choices = opciones_genero) 

    fecha_nacimiento = models.DateField(blank=True, null=True, verbose_name="Fecha de Nacimiento") 

    tipo_usuario = models.ForeignKey(Tipo_Usuario, verbose_name = 'Tipo Usuario') 

    def _unicode_(self): 
     return self.email 

    def get_email(self): 
     return self.email 

Это один urls.py

from django.conf.urls import patterns, include, url 
from .views import RegistrarUsuario, ReportarUsuario, ModificarUsuario 


urlpatterns = patterns('', 

    url(r'^registrar/$' , RegistrarUsuario.as_view() , name="registrar_usuario"), 
    url(r'^reportar/$' , ReportarUsuario.as_view() , name="reportar_usuario"), 

    url(r'^modificar/(?P<email>\d+)/$', ModificarUsuario.as_view(),name='modificar-usuario'), 

) 

Это один views.py

from django.views.generic import CreateView,TemplateView,ListView, UpdateView 

from braces.views import LoginRequiredMixin # handles authentication 
from .models import Usuario 
from apps.usuarios.models import Usuario 
from apps.tipos_usuario.models import Tipo_Usuario 
from django.core.urlresolvers import reverse_lazy 
from django.shortcuts import render_to_response 
from django.template import RequestContext 

from django.core.paginator import Paginator 
from django.core.paginator import EmptyPage 
from django.core.paginator import PageNotAnInteger 


class RegistrarUsuario(CreateView): 
    template_name = 'usuarios/registrarUsuario.html' 
    model = Usuario 
    success_url = reverse_lazy('reportar_usuario') 


class ReportarUsuario(ListView): 
    template_name = 'usuarios/reportarUsuarios.html' 
    model = Usuario 
    context_object_name = 'usuarios' 
    paginate_by = 2 


class ModificarUsuario(LoginRequiredMixin, UpdateView): 
    template_name = 'usuarios/modificarUsuario.html' 
    model = Usuario 
    success_url = reverse_lazy('modificar-usuario') 

    def get_object(self): 
     return Usuario.objects.get(email=self.request.GET.get('email')) 

Это один modificarUsuario.html

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Modificar Usuario</title> 
    <link rel="stylesheet" href="{{STATIC_URL}}css/style.css"> 
</head> 
<body> 
    <h1>Modificar Usuario</h1> 
    <ul> 
     {% for usuario in usuarios %} 
      <li class="contact">{{ usuario }} 
       (<a href="{% url "modificar-usuario" pk=email %}">Editar</a>) 
      </li> 
     {% endfor %} 
    </ul> 

</body> 
</html> 

И я файл с именем «base.html», где я пытаюсь вызвать HTML-файл «modificarUsuario.html» внутри опции в классе = nav:

<li><a href="/usuarios/modificar/">Modificar Usuario</a></li> 

Может ли кто-нибудь объяснить мне, как я могу это решить?

ответ

1

Как и ошибка, нет URL-адреса, который соответствует только/usuarios/modificar /. В вашем представлении модификации ожидается третий сегмент, который является целым (по какой-то причине вы вызвали электронную почту).

Вы правильно определили ссылку один раз, внутри modificarUsuario.html, где вы используете тег {% url %} для его создания. Но в базовом шаблоне вы только что связались с/usarios/modificar /, которого не существует; вы должны использовать ту же структуру для ссылки на страницу изменения конкретного пользователя.

(На самом деле в этом коде есть много других вещей, но это будет делать для стартеров.)