Annie Viviane Lessa
Annie Viviane Lessa

Reputation: 1

Django: I can not display the information searched from the database on the website

I'm setting up a user registration / login / search program and when I try to find users by email and show them on the site it's like they do not find it in the database, but it's there.

views.py

from django.shortcuts import render 
from django.views.generic import CreateView, TemplateView
from django.http import HttpResponseRedirect
from django.contrib.auth.views import login, logout     
from django.core.urlresolvers import reverse_lazy, reverse
from .forms import CustomUserCreationForm
from .models import MyUser


def home(request):  
    return render(request, 'usuarios/home.html')

def login_view(request, *args, **kwargs):   
    if request.user.is_authenticated():    
         return HttpResponseRedirect(reverse('usuarios:home'))

    kwargs['template_name'] = 'usuarios/login.html'             
    kwargs['extra_context'] = {'next': reverse('usuarios:home')} 
    return login(request, *args, **kwargs)                    

def logout_view(request, *args, **kwargs):  
    kwargs['next_page'] = reverse('usuarios:home') 
    return logout(request, *args, **kwargs)

class SerchView(TemplateView):
    template_name = "usuarios/pesquisar.html" 

    def search_view(request, **kwargs): 
        email = MyUser(email = request.GET['email'], nome = request.GET['nome'])
        myusers = MyUser.objects.filter(email__contains = 'email')  
        context = {'myusers': myusers}
        kwargs['extra_context'] = {'next': reverse('usuarios:pesquisar')}
        print (request.GET) 
        return render(request, context, **kwargs)

class RegistrationView(CreateView): 
    form_class = CustomUserCreationForm     
    success_url = reverse_lazy('usuarios:login')
    template_name = "usuarios/registrar.html"  

models.py

from django.db import models
from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager                                     
from django.contrib.auth.models import PermissionsMixin               

class EmailUserManager(BaseUserManager):    

    def create_user(self, *args, **kwargs):
        email = kwargs["email"]
        email = self.normalize_email(email)
        password = kwargs["password"]
        kwargs.pop("password")

        if not email:   
            raise ValueError(('Usuário deve inserir um endereço de e-mail.'))

        user = self.model(**kwargs)
        user.set_password(password)
        user.save(using = self._db)
        return user    

    def create_superuser(self, *args, **kwargs):     
        user = self.create_user(**kwargs)
        user.is_superuser = True
        user.save(using = self._db)
        return user

class MyUser(PermissionsMixin, AbstractBaseUser):   

    email = models.EmailField(
        verbose_name = ('Endereço de E-mail'),
        unique = True,
    )

    nome = models.CharField(            
        verbose_name = ('Nome'),
        max_length = 50,
        blank = False,  #Não permite um valor 'vazio'
        help_text = ('Informe seu nome completo.'),     
    )   

    USERNAME_FIELD = 'email'
    objects = EmailUserManager()

pesquisar.html

<h1>Busca de Usuários</h1>

<html>
<body>
       <form role = "form" class = "form" method = "GET" action = "{{ request.path }}{% if next %}?next={{ next }}{% endif %}">
              {% csrf_token %}
              <h5></h5>       
              <label for="email">E-mail <input type="text" name="email"></label>
              <input type = "submit" value='Pesquisar' />
              <h5></h5>
       </form>
       <table border="1">                
              <thead>
                     <th>Nome</th>
                     <th>E-mail</th>
              </thead>                
              <tbody>
                       {% for myuser in myusers %}     
                                   <tr>
                                   <td> {{ myuser.nome }} {{ myuser.email }}</td>
                                   </tr>
                       {% endfor %}
              </tbody>       
       </table>
</body>
</html>

I can not figure out what I'm doing wrong. Can someone point me in the right direction? Thank you in advance!

Upvotes: 0

Views: 42

Answers (1)

Herbert Poul
Herbert Poul

Reputation: 4883

This part of the code makes no sense:

    email = MyUser(email = request.GET['email'], nome = request.GET['nome'])
    myusers = MyUser.objects.filter(email__contains = 'email')  

maybe you meant something like:

myusers = MyUser.objects.filter(email__contains = request.GET['email'])  

Upvotes: 1

Related Questions