非会員記事修正機能-1


今日は、他のことを学ぶために、しばらく実現できなかったページ機能を追加してみました.
非会員作文を削除する機能が実現したが,修正機能がないため,この機能を追加することにした.
削除機能は思ったより簡単で、修正機能も簡単だと思っていたが、簡単ではなかった.
まだ成功していませんが、最大限の結果はこうです.
    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部分のみが動作するためです.
この問題をさらに理解して解決し、次の文章を書く必要があります.