Como passar e receber dados via POST, usando AngularJS?

679 views
Skip to first unread message

Fellipe Henrique

unread,
Apr 28, 2015, 2:27:40 PM4/28/15
to django...@googlegroups.com
Amigos, tenho a seguinte view:

def matricular_curso(request):
if request.method == 'POST':
id_curso = request.POST.get('idcurso')
if not id_curso:
raise Http404('Acesso não autorizado!')
else:
pass
else:
raise Http404('Acesso não autorizado!')

e o seguinte JS:

$scope.assinarCurso = function ($item) {
$scope.form.idcurso = $item;

$http({
method: 'POST',
url: PATH_INDEX + "api/curso/matricular",
data: $scope.form,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});
};
Eu quero enviar o form, como json para a view do django..

Porém ao receber isso no django aparece assim:

request -> Post 

<QueryDict: {'{"idcurso":1}': ['']}>

Aí quando eu tento passar para um dict, aparenta isso: {'{"idcurso":1}': ''}

quando deveria ser um dicionario onde idcurso com o valor 1

O que estou fazendo de errado?

Obrigado desde já..

T.·.F.·.A.·.     S+F
Fellipe Henrique P. Soares

e-mail: > echo "lkrrovknFmsgor4ius" | perl -pe \ 's/(.)/chr(ord($1)-2*3)/ge'
Twitter: @fh_bash

Erle Carrara

unread,
Apr 28, 2015, 6:57:08 PM4/28/15
to django...@googlegroups.com
Felipe,

Você precisa transformar o objeto que você está submetendo via post em uma string "urlencoded".


Segundo a documentação do angular [1], em Default Transformations, diz que por padrão serializa seu objeto p/ JSON, vocẽ quer submeter "à moda antiga", então precisa fornecer uma função para transformRequest :p

Abraço!


Régis Silva

unread,
Apr 29, 2015, 7:27:30 AM4/29/15
to django...@googlegroups.com
Nossa aonde eu clico em curtir nessa thread?

(y)

Fellipe Henrique

unread,
Apr 29, 2015, 9:36:55 AM4/29/15
to django...@googlegroups.com
Olá Erie,

Obrigado, funcionou...

Porém, fiquei com uma tremenda dúvida agora, quando li o que você escreveu.. "à moda antiga"... rsrs..

Poderia me indicar qual a melhor solução para esse tipo de problema? Pergunto, pois mais pra frente irei precisa enviar mais dados, e json é a melhor alternativa que eu vejo, principalmente usando o AngularJS... então queria usar de uma forma "correta" sem ter que ficar transformando toda hora..

Qual o melhor caminho, na sua opinião?

Abraços, e obrigado novamente...

T.·.F.·.A.·.     S+F
Fellipe Henrique P. Soares

e-mail: > echo "lkrrovknFmsgor4ius" | perl -pe \ 's/(.)/chr(ord($1)-2*3)/ge'
Twitter: @fh_bash

--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Mário Neto

unread,
Apr 29, 2015, 10:12:53 AM4/29/15
to django...@googlegroups.com
Você pode usar REST e pra isso existe uma app muito bacana que se integra ao django: http://www.django-rest-framework.org/
--
Att. Mário Araújo Chaves Neto
Programmer, Designer and U.I. Engineer

MBA in Design Digital - 2008 - FIC
Analysis and Systems Development - 2011 - Estácio
Design and Implementation of Internet Environments - 2003 - FIC

Erle Carrara

unread,
Apr 29, 2015, 11:24:35 AM4/29/15
to django...@googlegroups.com
Felipe,

A expressão "à moda antiga" foi um pouco pesada de mais, rsrs... Quiz dizer que você quer enviar um dado "urlencoded" (não sei se esse é o nome mais certo) no formato "chave1=valor&chave2=outrovalor".

Uma sugestão seria trabalhar com toda a comunicação cliente-servidor usando JSON e API's restful (você não precisa usar um framework "rest", pode implementar às views de maneira REST sem eles, é até legal para aprender!)

Att.,

Em 29 de abril de 2015 10:36, Fellipe Henrique <fell...@gmail.com> escreveu:



--
Erle Carrara

Fellipe Henrique

unread,
Apr 29, 2015, 12:30:06 PM4/29/15
to django...@googlegroups.com
@Erie
Entendi, valeu!

@Mário,

Até tentei usar ele, mas não consegui... porque no meu caso, minha view não está "vinculado" a um model, seria mesmo uma view "normal" onde receberia os dados.. aí eu não consegui usar o restframework...

T.·.F.·.A.·.     S+F
Fellipe Henrique P. Soares

e-mail: > echo "lkrrovknFmsgor4ius" | perl -pe \ 's/(.)/chr(ord($1)-2*3)/ge'
Twitter: @fh_bash

Erle Carrara

unread,
Apr 29, 2015, 1:01:17 PM4/29/15
to django...@googlegroups.com

Erle, eRle... (Mas eu sei como é chato o corretor ortográfico).

:)

Jotagê Sales - python

unread,
Apr 30, 2015, 3:34:51 PM4/30/15
to django...@googlegroups.com

amigão eu faço assim.

primerio crio um escopo e "amarro" esse escopo ao formulário através da tag ng-model

para enviar os dados para o servidor eu faço assim

$scope.add_usuario = function () {
var url = URL_BASE + 'cadastro_usuario'

$http.post(url, $scope.usuario)
.success(function (data) {

limpaFrmUsuario()

})
.error(function (data) {
alert('Vish deu ruim hein')
})
}

Dessa forma a informação já vai pro servidor em Json,
Observação: as mensagens eu não costumo usar essa ai do exemplo ;)

abração espero ter ajudado
Reply all
Reply to author
Forward
0 new messages