Şimdi Ara

Python flask aldığım bir hata

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
3 Misafir - 3 Masaüstü
5 sn
6
Cevap
0
Favori
157
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • şimdi hocam python flask ile uzun zaman önce blog projesi yapmıştım. şimdi açtığımda geliştireyim dedim. tam bitti derken bi hata aldım.


    ''@app.route('/yorum/<string:article_title>/', methods=["GET","POST"])

    def yorum_ekle(article_title):


        cevap = CevapVer(request.form)

        form = ArticleForm(request.form)


        if request.method=="POST" and cevap.validate():

            icerik = cevap.icerik.data

            cursor2 = mysql.connection.cursor()

            cnt = form.content.data

            tit = form.title.data

            sorgu2 = "SELECT author FROM articles WHERE title = %s AND content = %s "

            cursor2.execute(sorgu2,(cnt,tit))

            sonuclar = cursor2.fetchall()

            cevaplanan = None

           


            cursor = mysql.connection.cursor()

            sorgu = "insert into yorum(icerik,cevaplayan,cevaplanan) values(%s,%s,%s)"

            cursor.execute(sorgu,(icerik,session["username"],cevaplanan))

            mysql.connection.commit()

            cursor.close()


            flash("Yorum eklendi","success")



        return render_template('cevapla.html', article_title=article_title, cevap=cevap)


    ''



    burada yapmak istediğim şey kısaca şu. articles tablosundan bir makale aratıyorum ve bu makaleyi yapan kişinin kullanıcı adını alıp başka bir sorguda kullanmak istedim fakat bi hata aldım. kodu düzeltebilecek birisi var ise veya yardımcı olabilecek birisi var ise çok iyi olur


    hata:


    bir değerle ilişkili olmadığı 'cevaplanan' yerel değişkenine erişilemiyor









  • Kod

    Yığını:
    from flask import flash, render_template, request, redirect, url_for, escape, session @app.route('/yorum/<string:article_title>/', methods=["GET", "POST"]) def yorum_ekle(article_title): # 1. Authentication Kontrolü if "username" not in session: flash("Oturum açmalısınız.", "danger") return redirect(url_for('login')) # 'login' fonksiyonunu varsayımsal olarak kullandım. cevap = CevapVer(request.form) if request.method == "POST" and cevap.validate(): icerik = escape(cevap.icerik.data.strip()) # 2. XSS önleme try: # Veritabanı işlemleri için context yöneticisi kullanma with mysql.connection.cursor() as cursor: # 3. SQL Injection önleme sorgu2 = "SELECT author FROM articles WHERE title = %s AND content = %s" cursor.execute(sorgu2, (article_title, cevap.icerik.data)) sonuclar = cursor.fetchall() cevaplanan = sonuclar[0]['author'] if sonuclar else None sorgu = "INSERT INTO yorum(icerik, cevaplayan, cevaplanan) VALUES(%s, %s, %s)" cursor.execute(sorgu, (icerik, session["username"], cevaplanan)) mysql.connection.commit() flash("Yorum eklendi", "success") except Exception as e: # Hata yakalama mysql.connection.rollback() flash("Bir hata meydana geldi. Lütfen daha sonra tekrar deneyin.", "danger") return render_template('cevapla.html', article_title=article_title, cevap=cevap)

    Cevaplanan kısmına mantıklı birşeyler yazmalısın, ben tablo yapını bilmediğim için uydurdum. Orayı sen düzenlersin.




    < Bu mesaj bu kişi tarafından değiştirildi NextMove -- 31 Ağustos 2023; 0:57:27 >
    < Bu ileti mobil sürüm kullanılarak atıldı >




  • NextMove kullanıcısına yanıt

    hocam çok teşekkürler büyük ihtimal bu kod çalışacaktır fakat şan garip bir şey oldu. başka bir hata alıyorum



    türkçe

    MySQLdb.OperationalError: (1136, "Sütun sayısı 1. satırdaki değer sayısıyla eşleşmiyor")


    ingilizce

    MySQLdb.OperationalError: (1136, "Column count doesn't match value count at row 1")

  • NextMove kullanıcısına yanıt

    burada göstermediğim başka bi kodda hata çıktı hiç anlamadım

  • NextMove kullanıcısına yanıt

    hocam bu kafamı baya karıştırdı ben uyuyorum. teşekkürler yardımın için ama kodun şuan başka bir yerinde hata veriyor. büyük ihtimal bir tane databaseyi kaydedip close işlemini yapmadım. gözümden kaçmış olabilir. ama buraya kodu bırakıyorum yinede siz isterseniz incelersiniz. Şimdiden Teşekkürler


    ''



    @app.route('/yorum/<string:article_title>/', methods=["GET","POST"])


    def yorum_ekle(article_title):




        cevap = CevapVer(request.form)


        form = ArticleForm(request.form)



        if request.method=="POST" and cevap.validate():


            icerik = cevap.icerik.data


            cursor1 = mysql.connection.cursor()


            s1 = form.title.data


            s2 = form.content.data


            sorgu1 = "SELECT author FROM articles WHERE title = %s AND content = %s "


            cursor1.execute(sorgu1,(s1,s2))


            mysql.connection.commit()

            cursor1.close()


            cursor2 = mysql.connection.cursor()


            sorgu2 = "insert into yorum(icerik,cevaplayan,cevaplanan) values(%s,%s,%s)"


            cevaplanan = "asd"


            cursor2.execute(sorgu2,(icerik,session["username"],cevaplanan))


            mysql.connection.commit()


            cursor2.close()



            flash("Yorum eklendi","success")




        return render_template('cevapla.html', article_title=article_title, cevap=cevap)





    @app.route("/addarticle",  methods=["GET","POST"])

    def addarticle():

        form = ArticleForm(request.form)

        if request.method=="POST" and form.validate():

            title = form.title.data

            content = form.content.data


            cursor = mysql.connection.cursor()


            sorgu = "Insert into articles(title,author,content) VALUES(%s,%s,%s)"

            name = session["username"]

            cursor.execute(sorgu,(title,name,content))


            mysql.connection.commit()


            cursor.close()

            flash("Makale Başarıyla Eklendi","success")


            return redirect(url_for("dashboard"))

        return render_template("addarticle.html", form=form)


    ''



    hata verdiği yer sanırım burası:



    ''


    @app.route("/dashboard")

    @login_required

    def dashboard():

        cursor = mysql.connection.cursor()

        sorgu = "Select * From articles where author=%s"


        result = cursor.execute(sorgu,(session["username"]))


        if result > 0:

            articles = cursor.fetchall()

            return render_template("dashboard.html",articles=articles)

        else:

            return render_template("dashboard.html")


        return render_template("dashboard.html")    ''


    MySQLdb.OperationalError: (1136, "Column count doesn't match value count at row 1")


    MySQLdb.OperationalError: (1136, "Sütun sayısı 1. satırdaki değer sayısıyla eşleşmiyor")



    Kod

    Yığını:
    cursor.execute(sorgu,(icerik,session["username"])) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    hata olan yermiş





  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.