J'essaie de créer un modèle qui contient un formulaire qui crée quelque chose et une liste de ces choses. Si j'ai les vues

def list_of_something(request):
    list1=something.objects.all()
    return render(request , 'index.html' ,{'list1':list1})
def post_something(request):
    form_class=SomethingForm
    if request.method="POST":
        form=form_class(request.POST)
        if form.is_valid():
        .........
        ........
        ........
    return render(request, 'post_something.html', {'form': form,})

Voilà ce que j'ai fait.

  1. J'ai essayé le include en mettant {% include "post_something.html" %} dans index.html, il charge le post_something.html mais quand il arrive à {{form.as_p}} il ne le charge pas ?
  2. J'ai vérifié la vue basée sur les classes, mais je ne sais pas comment l'utiliser pour faire ce qui précède.

METTRE À JOUR Grâce aux réponses ci-dessous. Ce que j'ai fait, c'est d'ajouter {% include "post_something.html" %} à index.html.et de transmettre le nom du formulaire à la vue return render(request,'index.html,{'list1':list1,'form':SomethingForm()}) . Et en plus, pointez votre attribut d'action de formulaire sur la vue post_something et cela devrait fonctionner.

0
Bolaji 28 juin 2016 à 10:40

2 réponses

Meilleure réponse

post_something.html n'est que le nom du modèle, vous devez toujours passer le formulaire. Je suppose que vous essayez d'afficher la vue list_of_something, vous devez donc inclure le formulaire dans les données de contexte de cette vue.

return render(request , 'index.html',{'list1':list1, 'form': SomethingForm()})
0
Sayse 28 juin 2016 à 10:53

Supposons que le contenu de post_something.html sera fusionné avec index.html lorsque vous utilisez la balise {% include %}. Vous devez maintenant transmettre toutes les variables du modèle fusionné à partir de votre vue. Ça devrait être comme ça :

return render(request, 
              'index.html',
              {'list1':list1, 'form': form})

Vous pouvez définir le form en fonction de votre cas d'utilisation métier.

0
Sivasubramaniam Arunachalam 28 juin 2016 à 10:56