Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Duvida e problema com o Redirect

no finalzinho do video foi trocado uma linha de código duplicada que joga para a index, no lugar foi colocado um redirect. tentei colocar também mas recebi um erro:

NoReverseMatch at /perfis/3/convidar
Reverse for 'index' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
Request Method:    GET
Request URL:    http://localhost:8000/perfis/3/convidar
Django Version:    1.7.4
Exception Type:    NoReverseMatch
Exception Value:    
Reverse for 'index' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
Exception Location:    /home/alvaro/.local/lib/python2.7/site-packages/django/core/urlresolvers.py in _reverse_with_prefix, line 468
Python Executable:    /usr/bin/python
Python Version:    2.7.12
Python Path:    
['/home/alvaro/Documents/alura/Django Project/connectedin',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-x86_64-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/usr/lib/python2.7/lib-old',
 '/usr/lib/python2.7/lib-dynload',
 '/home/alvaro/.local/lib/python2.7/site-packages',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages/PILcompat',
 '/usr/lib/python2.7/dist-packages/gtk-2.0',
 '/usr/lib/python2.7/dist-packages/ubuntu-sso-client',
 '/usr/lib/python2.7/dist-packages/wx-3.0-gtk2']
Server time:    Sat, 19 Nov 2016 00:33:12 +0000

mas esta rodando tudo normal, apenas esse redirect que travou. Meu arquivo views.py esta exatamente assim:

from django.shortcuts import render, redirect
from perfis.models import Perfil

def index(request):
    return render(request, 'index.html', {'perfis' : Perfil.objects.all()})

def perfis(request, perfil_id):
    print 'ID do perfil e %s' % (perfil_id)

    perfil = Perfil.objects.get(id=perfil_id)
    print 'Nome e %s' %(perfil.nome)

    return render(request, 'perfis.html', {'perfil' : perfil})

def convidar(request, perfil_id,):
    perfil_a_convidar = Perfil.objects.get(id=perfil_id)
    perfil_logado = get_perfil_logado(request)
    perfil_logado.convida(perfil_a_convidar)
    return redirect('index')

def get_perfil_logado(request):
    return Perfil.objects.get(id=1)

eu n entendi porque usar o redirect, talvez mais para frente faça sentido, mas consegui continuar o código executando da mesma forma, apenas mudando esta linh chamando a função index desta maneira:

return index(request)

como esta no mesmo arquivo funcionou normalmente. Qual foi o problema com o Redirect? e, chamando a função diretamente da forma que fiz pode dar algum problema?

1 resposta
solução!

Descobri oque aconteceu Em meu arquivo urls.py, estava sem um NAME o arquivo antigo estava assim:

urlpatterns = patterns('',
    url(r'^$', views.index),
    url(r'^perfis/(?P<perfil_id>\d+)$', views.perfis, name='perfil'),
    url(r'^perfis/(?P<perfil_id>\d+)/convidar$', views.convidar, name='convidar')
)

Apenas adicionei o Name, ficou desta forma:

urlpatterns = patterns('',
    #name adicionado nesta linha
    url(r'^$', views.index, name='index'),
    url(r'^perfis/(?P<perfil_id>\d+)$', views.perfis, name='perfil'),
    url(r'^perfis/(?P<perfil_id>\d+)/convidar$', views.convidar, name='convidar')
)