From 31429a1994b76bef8939e0eb119c1ece7fb27c8e Mon Sep 17 00:00:00 2001 From: CFE Date: Mon, 16 Dec 2019 14:31:05 -0800 Subject: [PATCH] 31 - Handling Form Errors --- db.sqlite3 | Bin 135168 -> 135168 bytes templates/pages/home.html | 8 ++++++++ tweets/views.py | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/db.sqlite3 b/db.sqlite3 index 78dd8513f5e06bf2bd650604af6772aed236106a..a29f580cf6a17d970c61dcb7e57d11eebe45beee 100644 GIT binary patch delta 77 zcmZozz|pXPV}dke*hCp;#;}bEqWX*$&1L%A%k&xhE-+j0)K6t+%4Ol{;i=!OsKCx6 h#%;mEAkCXtoRXH9Qp|47!XV6>n3TMIDi2dOGXP^-6tw^V delta 49 zcmZozz|pXPV}dke$V3@u#*mE(qWX+x&1L%A%k&xhE-;(%Or6Tkl)G6`L6K+sR34^m FW&nkG4$}Yt diff --git a/templates/pages/home.html b/templates/pages/home.html index 01ba23b..90c1756 100644 --- a/templates/pages/home.html +++ b/templates/pages/home.html @@ -51,9 +51,17 @@

Welcome to Tweetme 2

const ogHtml = tweetsContainerElement.innerHTML tweetsContainerElement.innerHTML = newTweetElement + ogHtml myForm.reset() + } else if (xhr.status === 400) { + const errorJson = xhr.response + console.log(errorJson) + } else if (xhr.status === 500) { + alert("There was a server error, please try again.") } } + xhr.onerror = function() { + alert("An error occurred. Please try again later.") + } xhr.send(myFormData) } const tweetCreateFormEl = document.getElementById("tweet-create-form") diff --git a/tweets/views.py b/tweets/views.py index 146d762..8e1fcc3 100644 --- a/tweets/views.py +++ b/tweets/views.py @@ -14,6 +14,7 @@ def home_view(request, *args, **kwargs): return render(request, "pages/home.html", context={}, status=200) def tweet_create_view(request, *args, **kwargs): + print(abc) form = TweetForm(request.POST or None) next_url = request.POST.get("next") or None if form.is_valid(): @@ -25,6 +26,9 @@ def tweet_create_view(request, *args, **kwargs): if next_url != None and is_safe_url(next_url, ALLOWED_HOSTS): return redirect(next_url) form = TweetForm() + if form.errors: + if request.is_ajax(): + return JsonResponse(form.errors, status=400) return render(request, 'components/form.html', context={"form": form})