非会員記事修正機能-1
今日は、他のことを学ぶために、しばらく実現できなかったページ機能を追加してみました.
非会員作文を削除する機能が実現したが,修正機能がないため,この機能を追加することにした.
削除機能は思ったより簡単で、修正機能も簡単だと思っていたが、簡単ではなかった.
まだ成功していませんが、最大限の結果はこうです.
また、確認パスワードボタンとQuestionForm 2()に修正内容を保存するボタンを押すと、どちらもPOST要求が発行される.
2つのリクエスト.method==「POST」の場合、formに従ってページング処理をすればよいので、各ページに適切なformが使用されていることを確認するためにテンプレートページは上のようにformが出力されます.
まず、予想通りにフォームがうまく出力されます.しかしform基準でPOSTリクエストはできなかった.
パスワード確認ボタン機能付きelifセクションでrequest.メソッド=="POST"の後、and form==CheckPassword()を条件に追加すると、パスワードをチェックせずにコンテンツ変更ページを直接ロード中にエラーが発生します.
しかし、条件でform=CheckPassword()がキャンセルされ、パスワード確認操作が正常に行われ、パスワードパスワードに問題が発生した.コンテンツ変更テンプレートはpasswordと一致する場合にのみロードされます.
ただし、内容の変更と保存後に問題が発生しました.
このとき、保存ボタンはPOST要求をトリガーし、最初のif条件(変更内容の保存)を予想通りに実行するのではなく、保存ボタンをクリックして、さっきのパスワードで使用したifの後ろのelif関数が動作しているかどうかを確認します.
このようにパスワード確認ページが表示され、パスワードが間違っていると言います.
if文でformの処理方法が間違っているかもしれませんが、細部で何か見逃しているようです.どうしてそう思うの?今form条件のないelif requestmethod==POST部分のみが動作するためです.
この問題をさらに理解して解決し、次の文章を書く必要があります.
非会員作文を削除する機能が実現したが,修正機能がないため,この機能を追加することにした.
削除機能は思ったより簡単で、修正機能も簡単だと思っていたが、簡単ではなかった.
まだ成功していませんが、最大限の結果はこうです.
elif not question.user: # 비회원 작성글
form = QuestionForm2(obj=question)
if request.method == 'POST' and form==QuestionForm2(obj=question): # 수정 후 저장하기 버튼 누를때
form = QuestionForm2()
if form.validate_on_submit():
form.populate_obj(question)
question.modify_date = datetime.now()
db.session.commit()
return redirect(url_for('question.detail', question_id=question_id))
elif request.method == 'POST' : # 비밀번호 확인 버튼
form = CheckPassword()
password = form.password_check.data
if password == question.password:
form = QuestionForm2(obj=question)
elif password != question.password:
flash('비밀번호 틀림')
return render_template('question/no_login_password.html', form=form)
#return render_template('question/question_modify_form.html', form=form)
elif request.method=='GET': # 수정 버튼
form = CheckPassword()
#if password!=question.password:
# if password!=None:
# flash('비밀번호가 다릅니다.')
return render_template('question/no_login_password.html', form=form)
#else:
# form = QuestionForm2(obj=question)
# return render_template('question/question_modify_form.html', form=form)
return render_template('question/question_modify_form.html', form=form)
[修正](Modify)ボタンをクリックすると、GETリクエストがトリガーされ、リクエストされます.method==「GET」を使用してCheckPassword()formを呼び出してパスワードを確認します.また、確認パスワードボタンとQuestionForm 2()に修正内容を保存するボタンを押すと、どちらもPOST要求が発行される.
2つのリクエスト.method==「POST」の場合、formに従ってページング処理をすればよいので、各ページに適切なformが使用されていることを確認するためにテンプレートページは上のようにformが出力されます.
まず、予想通りにフォームがうまく出力されます.しかしform基準でPOSTリクエストはできなかった.
パスワード確認ボタン機能付きelifセクションでrequest.メソッド=="POST"の後、and form==CheckPassword()を条件に追加すると、パスワードをチェックせずにコンテンツ変更ページを直接ロード中にエラーが発生します.
しかし、条件でform=CheckPassword()がキャンセルされ、パスワード確認操作が正常に行われ、パスワードパスワードに問題が発生した.コンテンツ変更テンプレートはpasswordと一致する場合にのみロードされます.
ただし、内容の変更と保存後に問題が発生しました.
このとき、保存ボタンはPOST要求をトリガーし、最初のif条件(変更内容の保存)を予想通りに実行するのではなく、保存ボタンをクリックして、さっきのパスワードで使用したifの後ろのelif関数が動作しているかどうかを確認します.
このようにパスワード確認ページが表示され、パスワードが間違っていると言います.
if文でformの処理方法が間違っているかもしれませんが、細部で何か見逃しているようです.どうしてそう思うの?今form条件のないelif requestmethod==POST部分のみが動作するためです.
この問題をさらに理解して解決し、次の文章を書く必要があります.
Reference
この問題について(非会員記事修正機能-1), 我々は、より多くの情報をここで見つけました https://velog.io/@areum0921/비회원-글-수정기능-1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol