Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Diegus Miestro

Django Debug in views.py

Recommended Posts

Olá pessoas, estou estudando Python e desenvolvendo um sistema com o framework Django para um setor em um colégio, inicialmente fiz o cadastro de aluno(apenas com nome por enquanto) e responsável(apenas com nome por enquanto), porém não sei como relacionar em muitos para muitos, gostaria de em uma tela, cadastrar o nome do aluno e de seu responsável e em seguida salvar ambos com o devido relacionamento.

 

PS: Não sei como visualizar o que recebo via POST, procurei pela internet e nada me pareceu mostrar o que quero.

 

Segue o que fiz até o momento:

 

model.py

from django.db import models

class Estudante(models.Model):
    nome = models.CharField(max_length=256)
    def __str__(self):
        return self.nome
    class Meta:
        ordering = ('nome',)

class Responsavel(models.Model):
    nome = models.CharField(max_length=256)
    estudantes = models.ManyToManyField(Estudante)
    def __str__(self):
        return self.nome
    class Meta:
        ordering = ('nome',)

form.py

from django import forms

from .models import Estudante, Responsavel

class EstudanteForm(forms.ModelForm):

    class Meta:
        model = Estudante
        fields = ('nome',)

class ResponsavelForm(forms.ModelForm):
    class Meta:
        model = Responsavel
        fields = ("nome",)

views.py

from django.shortcuts import render, redirect
from .models import Estudante, Responsavel
from .forms import EstudanteForm, ResponsavelForm

def estudantes_listar(request):
    estudantes = Estudante.objects.all()
    return render(request, 'integral/estudantes_listar.html', {"estudantes": estudantes})

def estudante_adicionar(request):
    if request.method == "POST":
        estudanteform = EstudanteForm(request.POST)
        responsavelform = ResponsavelForm(request.POST)
        if estudanteform.is_valid():
            # estudante = form.save(commit=False)
            # estudante.save()
            # return redirect('integral.views.estudantes_listar')
    else:
        estudanteform = EstudanteForm(prefix='estudante')
        responsavelform = ResponsavelForm(prefix='responsavel')
    return render(request, 'integral/estudante_adicionar.html', {'estudante': estudanteform, 'responsavel': responsavelform})

def responsaveis_listar(request):
    responsaveis = Responsavel.objects.all()
    return render(request, 'integral/responsaveis_listar.html', {"responsaveis": responsaveis})

def responsavel_adicionar(request):
    if request.method == "POST":
        form = ResponsavelForm(request.POST)
        if form.is_valid():
            responsavel = form.save(commit=False)
            responsavel.save()
            return redirect('integral.views.responsaveis_listar')
    else:
        form = ResponsavelForm()
    return render(request, 'integral/responsavel_adicionar.html', {'form': form})

Compartilhar este post


Link para o post
Compartilhar em outros sites

Respondendo a minha pergunta a fim de registro:

 

Usa-se: import pdb; pdb.set_trace()

 

Esse comandos, o primeiro importa a biblioteca e o segunda a executa, param a execução do código e através do terminal é possível mexer nos valores, por exemplo:

def estudante_adicionar(request):
    if request.method == "POST":
       import pdb; pdb.set_trace()
       ...

com isso, após cair na validação se é um POST, a aplicação pausa e no terminal vai aparecer:

(Pdb)

Com isso é possível acessar as variáveis e mesmo fazer testes via terminal como por exemplo, eu quero que seja exibido os dados vindos via POST:

(Pdb) request.POST

ou de uma variável via post com uma informação, tipo nome:

(Pdb) request.POST.get("nome")

Mas se for um mesmo name em vários inputs, como contatos por exemplo:

(Pdb) request.POST.getList("contatos")

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.