<トラブルシューティング>Ajax,Django連動...
13409 ワード
概要
チームプロジェクトでは、会員入金画面でEメールの重複確認機能を実現しています.解決過程で正常に機能していない問題のケースを記録したいです.
画面で重複確認ボタンを押し、入力した値をデータベース情報と比較した後、重複するか否かを出力します.ただし、どのメールでも印刷できます.
問題は、繰り返し確認ボタンを押すとJavaScriptから入力バーの値を取得してviewsファイルに渡すことができないためです.viewsファイルに電子メールを保存する関数を要求します.POST.get('email',''), request.POST['email'], request.GET["email"]などに変換しても、同じemail変数は空の値として定義されます.
繰り返し確認ボタンをクリックするイベントを含むjsファイルは、電子メールの繰り返しチェック機能を含むビューファイル を含む.繰り返し確認ボタンをクリックすると接続するURLファイル 繰り返し確認ボタンラベル
チームメンバーとのディスカッションでは、viewsファイルが問題ではなくJavaScriptのAjaxがデータを転送できないのではないかと疑う人がいます.したがってajax文にviewsに移動するデータを追加すると、データの値が正常値を超え、繰り返しチェックが正常に動作します.
修正ajax構文
に感銘を与える
思いがけないところにミスがあったことに気づき、「まさか」と思ってやってみたところ、問題が解決してよかったので、痛快でした.しかし、正確な理由はまだ分からない.これはajaxの基本フォームであるか、他の理由がある可能性があります.
問題を解決するたびに、「この問題がどのような問題なのか、可能な原因は何なのか、どのキーワードを検索すべきかを解決するために」という部分を明確に定義してこそ、時間を減らすことができます.また、思わぬところで問題が発生した可能性もあるので、最初は問題だと思っていたところに集中して、できないのであれば、関連する部分も問題の範囲内で考えるべきです.
チームプロジェクトでは、会員入金画面でEメールの重複確認機能を実現しています.解決過程で正常に機能していない問題のケースを記録したいです.
1.状況
画面で重複確認ボタンを押し、入力した値をデータベース情報と比較した後、重複するか否かを出力します.ただし、どのメールでも印刷できます.
2.質問
問題は、繰り返し確認ボタンを押すとJavaScriptから入力バーの値を取得してviewsファイルに渡すことができないためです.viewsファイルに電子メールを保存する関数を要求します.POST.get('email',''), request.POST['email'], request.GET["email"]などに変換しても、同じemail変数は空の値として定義されます.
繰り返し確認ボタンをクリックするイベントを含むjsファイル
$('.email-check-btn').click(function () {
const email = $('#email').val()
if (email === '') {
alert('이메일 입력 좀...!!!!')
return
}
$.ajax({
type: 'POST',
url: '/email-check/',
datatype: 'json',
success: function (response) {
if (response.result !== 'success') {
return
}
if (response.data === 'exist') {
alert('그 이메일은 이미 있소!')
$('#email').val('').focus()
} else {
alert('좋아, 사용 가능하군!!')
}
}
})
})
ビューファイル@csrf_exempt
def email_check(request):
if request.method == 'POST':
email = request.POST.get('email', '')
try:
user = UserModel.objects.get(email=email)
except Exception as e:
user = None
result = {
'result': 'success',
'data': 'not exist' if user is None else 'exist'
}
return JsonResponse(result)
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index, name='index'),
path('sign-in/', views.sign_in, name='sign-in'),
path('sign-up/', views.sign_up, name='sign-up'),
path('email-check/', views.email_check, name='email-check'),
path('main/', views.main, name='main'),
path('my-page/', views.my_page, name='my-page'),
]
<div class="email-check-wrapper">
<input type="email" placeholder="Email" id="email" name="email"/>
<button class="email-check-btn" type="button">중복확인</button>
</div>
3.解決
チームメンバーとのディスカッションでは、viewsファイルが問題ではなくJavaScriptのAjaxがデータを転送できないのではないかと疑う人がいます.したがってajax文にviewsに移動するデータを追加すると、データの値が正常値を超え、繰り返しチェックが正常に動作します.
思いがけないところにミスがあったことに気づき、「まさか」と思ってやってみたところ、問題が解決してよかったので、痛快でした.しかし、正確な理由はまだ分からない.これはajaxの基本フォームであるか、他の理由がある可能性があります.
問題を解決するたびに、「この問題がどのような問題なのか、可能な原因は何なのか、どのキーワードを検索すべきかを解決するために」という部分を明確に定義してこそ、時間を減らすことができます.また、思わぬところで問題が発生した可能性もあるので、最初は問題だと思っていたところに集中して、できないのであれば、関連する部分も問題の範囲内で考えるべきです.
Reference
この問題について(<トラブルシューティング>Ajax,Django連動...), 我々は、より多くの情報をここで見つけました https://velog.io/@dydgjs7878/문제-해결-Ajax-Django-연동에서テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol