Skip to content

Instantly share code, notes, and snippets.

@osantana
Last active August 28, 2021 09:28
Show Gist options
  • Save osantana/9a2e5cc4bcdfc2fbab2d to your computer and use it in GitHub Desktop.
Save osantana/9a2e5cc4bcdfc2fbab2d to your computer and use it in GitHub Desktop.
Django Form View Function
# Modo sugerido pela documentação do Django
def create(request, template_name="my_app/my_form.html"):
if request.method == 'POST':
form = MyForm(request.POST, request.FILES)
if form.is_valid():
instance = form.save(commit=False)
do_x() # custom logic here
instance.save()
return redirect('home')
else:
form = MyForm()
return render(request, template_name, {'form': form})
# Modo suscinto (deve sempre existir um form no template/POST)
def create(request, template_name="my_app/my_form.html"):
form = MyForm(request.POST or None, request.FILES or None)
if form.is_valid():
instance = form.save(commit=False)
do_x() # custom logic here
instance.save()
return redirect('home')
return render(request, template_name, {'form': form})
# Modo sugerido pela documentação do Django
def edit(request, obj_id, template_name="my_app/my_form.html"):
instance = get_object_or_404(Model, pk=obj_id)
if request.method == 'POST':
form = MyForm(inrequest.POST, request.FILES, instance=instance)
if form.is_valid():
instance = form.save(commit=False)
do_x() # custom logic here
instance.save()
return redirect('home')
else:
form = MyForm()
return render(request, template_name, {'form': form})
# Modo suscinto (deve sempre existir um form no template/POST)
def edit(request, obj_id, template_name="my_app/my_form.html"):
instance = get_object_or_404(Model, pk=obj_id)
form = MyForm(inrequest.POST or None, request.FILES or None, instance=instance)
if form.is_valid():
instance = form.save(commit=False)
do_x() # custom logic here
instance.save()
return redirect('home')
return render(request, template_name, {'form': form})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment