def edit_snippet(request, snippet_id): snippet = get_object_or_404(Snippet, pk=snippet_id) if request.method == "POST": form = SnippetForm(request.POST, instance=snippet) if form.is_valid(): form.save() messages.add_message(request, messages.SUCCESS, "スニペットを更新しました。") return redirect('snippet_detail', snippet_id=snippet_id) else: form = SnippetForm(instance=snippet) return render(request, 'snippets/snippet_edit.html', {'form': form})
def post(self, request, id): try: snippet = request.user.snippets.get(id=id) except Snippet.DoesNotExist: raise Http404() snippet_form = SnippetForm(request.POST, instance=snippet) if snippet_form.is_valid(): snippet_form.save() return HttpResponseRedirect(reverse('snippet_detail', kwargs={'id': snippet.id})) return TemplateResponse(request, 'snippets/edit.html', {'snippet': snippet, 'snippet_form': snippet_form})
def edit( request, object_id ): # Normally the call comes from a view (list or detail) try: came_from = request.META['HTTP_REFERER'] except: came_from = False context = 'detail_edit' template = 'snippets/snippet_edit.html' # These basic data are expected in some templates data = { 'context' : context, 'user' : request.user, } from snippets.models import Snippet from snippets.forms import SnippetForm try: # If editing an object, the object should exist snippet = Snippet.objects.get( id = object_id ) except: # Otherwise we have no object, which is a valid state if adding one snippet = None # We prepair the form with the snippet ('None' or a valid object) form = SnippetForm( request.POST or None, instance = snippet ) if form.is_valid(): if not snippet: # A new snippet needs a new ID snippet = form.save( commit = False ) snippet = form.save() # The form is filled correctly and the call came from the edit view if form.is_valid() and came_from and came_from.endswith('/edit'): # so we return to the snippet details view return HttpResponseRedirect( snippet.GetAbsoluteUrl() ) # It seems to be neccessary to edit the snippet: We add the form to the data data.update({ 'form' : form, }) # and we forward the data (and potential error messages) to the edit form from django.template import RequestContext return render_to_response( template, data, context_instance = RequestContext(request) )
def create_snippet(request): """ paste code on this page """ if request.method == 'GET': form = SnippetForm() elif request.method == 'POST': form = SnippetForm(data=request.POST) if form.is_valid(): snip_post = form.save(commit=False) # return instates # code_list = list() # code = snip_post.code.split('\n') # for i, line in enumerate(code, 1): # this = f'{i}'.zfill(2) + ' ' + line # code_list.append(this) # # snip_post.code = '\n'.join(code_list) snip_post.save() # now save form.save_m2m() # send to display view (below) # using url related name return redirect('snippet_detail', pk=snip_post.id) lang = Language.objects.order_by('name') context = {'form': form, 'lang': lang} return render(request, 'create.html', context)
def post(self, request): snippet_form = SnippetForm(request.POST) if snippet_form.is_valid(): snippet = snippet_form.save() if request.user.is_authenticated(): snippet.user = request.user snippet.save() return HttpResponseRedirect(reverse('snippet_detail', kwargs={'id': snippet.id})) return TemplateResponse(request, 'snippets/new.html', {'snippet_form': snippet_form})
def new_snippet(request): if request.method == 'POST': form = SnippetForm(request.POST) if form.is_valid(): snippet = form.save(commit=False) snippet.created_by = request.user snippet.save() return redirect(top) else: form = SnippetForm() return render(request, "snippets/snippet_new.html", {'form': form})
def snippet_change(request, pk): """ crud, update snippet """ s = Snippet.objects.get(id=pk) if request.method == 'GET': form = SnippetForm(instance=s) elif request.method == 'POST': form = SnippetForm(instance=s, data=request.POST) if form.is_valid(): update_snip = form.save(commit=False) update_snip.save() return redirect('snippet_detail', pk=update_snip.id) s_name = s.title context = {'form': form, 'name': s_name} return render(request, 'snippet_change.html', context)