Voici le code des vues basées sur les classes :

# views.py
class ObjectCreate(CreateView):
    model = ObjectModel
    fields = "__all__"

Il est simple de créer un objet et de l'enregistrer en utilisant cette classe.

Je me demande comment?

Que se passe-t-il si je souhaite utiliser des vues basées sur des fonctions pour y parvenir?

0
YEZIHANG 18 mars 2019 à 19:00

2 réponses

Meilleure réponse

En utilisant une vue de fonction, vous auriez besoin de tout implémenter, y compris la création d'un formulaire pour votre modèle :

def create_object(request):
    if request.method == 'GET':
        form = ObjectForm()

    if request.method == 'POST':
        form = ObjectForm(request.POST)
        if form.is_valid():
            instance = form.save()  # instance created
            # now redirect user or render a success template
            return redirect(...)

    # if request method is GET or form is invalid return the form
    return render(request, 'path/template_name.html', {'form': form})
1
p14z 18 mars 2019 à 16:12

Si vous voulez savoir comment fonctionne le CreateView, regardez son code source. Ou pour un aperçu plus facile de la structure, consultez ce site qui répertorie tous les CBV Django.

Vous constaterez que CreateView hérite de 9 autres classes, possède environ 20 attributs (dont model et fields) et 24 méthodes que vous pouvez surcharger pour personnaliser son comportement.

1
dirkgroten 18 mars 2019 à 16:13