Gere objetos JavaScript fora dos modelos do Django

Estou realizando muito trabalho de JavaScript no navegador e gostaria de ter algumas dessas funcionalidades de back-end no front-end. Especificamente, seria bom ter as funções get() , salvar() , all() e count() disponível para o cliente. Além disso, seria ótimo ter a lista de campos do modelo já disponível no objeto JavaScript gerado.

Se o usuário atual pode ler ou gravar os registros é um problema separado que lidarei com a autenticação do Django. Por enquanto, a recuperação seria um começo.

Em suma, existe código que gere um modelo JavaScript de um modelo do Django?

Obrigado.

5

5 Respostas

Parece que você está procurando uma interface JavaScript completa para as APIs de modelo e queryset. Eu não posso imaginar que isso já teria sido feito ou até mesmo uma tarefa simples. Não apenas você precisaria de alguma forma gerar instâncias JavaScript de modelos (muito mais do que a serialização JSON fornece, desde que você também queira os métodos), mas você precisaria expor um serviço da web que possa lidar com todo tipo de chamada DB-API. Eu não posso nem começar a imaginar por onde começar e os problemas de segurança podem ser muito numerosos para serem facilmente superados.

A abordagem alternativa (e muito mais simples) seria usar um dos vários módulos REST do Django e a serialização JSON. Você pode executar uma solicitação AJAX GET em um recurso, que pode ser identificado por uma série de parâmetros de consulta que seriam equivalentes aos filtros de queryset encadeados. Isso retornaria a representação JSON dos valores do modelo. Você pode modificar o objeto JavaScript e usar uma solicitação AJAX POST sobrecarregada para persistir as alterações de volta ao servidor. Você não teria acesso aos métodos do modelo, de modo que a funcionalidade teria que ser reimplementada, mas fazer alterações em um modelo deveria ser simples o suficiente - basicamente, o equivalente JavaScript de usar um formulário HTML para modificar dados.

7
adicionado
Sim, acho que esta é a abordagem correta. Talvez você queira ler jacobian.org/writing/rest-worst-practices provavelmente antes de começar, no entanto.
adicionado o autor Density 21.5, fonte

You need a data serializer. You can do it with django built in serializers. It is documented on official django site. djangoproject_topics-serialization

1
adicionado

I've started a project that I think does exactly what you're looking for. You can find it at github_bumby_jslib.
It currently only supports get(), but I'm hoping to extend this soon. Feel free to contribute patches :)

jslib é uma aplicação Django com o objetivo de simplificar a integração do AJAX com seus projetos Django.

1
adicionado

Então já faz um tempo desde que eu postei a pergunta original e desde então tem havido uma série de desenvolvimentos em Djangoland. Não menos importante, é uma grande biblioteca chamada Django REST Framework. Eu vou usá-lo em um novo projeto e parece muito bonito.

http://www.django-rest-framework.org

0
adicionado

Parece que você deseja JSON codificar seus dados de objeto . Consulte JSON.org para mais informações sobre o formato dos dados.

0
adicionado
A codificação JSON fornece apenas os dados do objeto. Não oferece o modelo de referência (ou seu nome) e nenhuma funcionalidade. :(
adicionado o autor Dimitry, fonte
JavaScript Brasil OFICIAL
JavaScript Brasil OFICIAL
4 138 dos participantes

Grupo sobre JavaScript do Brasil