Python flask arayüzde açıklama girişini nasıl yapabilirim?

Selamlar,

Flask ta yazdığım bir arayüzde her satır için açıklama textbox ları oluşturdum. Karşısına ise edit butonları koydum. Doğru mu yaptım onuda bilmiyorum açıkçası… Datalar sqlite database den geliyor. Takıldığım ve işin içinden çıkamadığım konu şu oldu. textbox lara yazmış olduğum açıklamayı edit butonu ile o satırın açıklama kısmına kayıt etmesini istiyorum. Desteklerinizi rica ediyorum.

@app.route('/templist', methods=['GET', 'POST'], defaults={"sayfa": 1})
@app.route('/templist<int:sayfa>', methods=['GET', 'POST'])
def temp_kayit_listeleme(sayfa = 1):
    gosterilecek = 20
    hatalar = TempDuruslar.query.order_by(TempDuruslar.firstDate.desc()).paginate(sayfa, gosterilecek, error_out = False)  #desc()

    if request.method == 'POST' and 'basla' in request.form:
        basla = request.form.get('basla')
        bitis = request.form.get('bitis')
        hatalar = TempDuruslar.query.filter(TempDuruslar.firstDate.between(basla, bitis)).order_by(TempDuruslar.firstDate.desc()).paginate(sayfa, per_page = gosterilecek, error_out=False)

        return render_template('templist.html', hatalar = hatalar, user = current_user, basla = basla, bitis = bitis)

    return render_template('templist.html', hatalar = hatalar, user = current_user)
{% extends "base.html" %} {% block title %}İstasyon{% endblock %} {% block content %}
<style>
table{
    width:100%;
}
#example_filter{
    float:right;
}
#example_paginate{
    float:right;
}
label {
    display: inline-flex;
    margin-bottom: .5rem;
    margin-top: .5rem;

}
.page-item.disabled .page-link {
    color: #6c757d;
    pointer-events: none;
    cursor: auto;
    background-color: #fff;
    border-color: #dee2e6;
}
</style>
<script>
$(document).ready(function(){
	$(function(){
		$('#basla').datepicker({
  dateFormat: "yy-mm-dd"
});
		$('#bitis').datepicker({
  dateFormat: "yy-mm-dd"
});
	});
});
function excelAktar(){
	var basla = $('#basla').val();
	var bitis = $('#bitis').val();
	var link = '/temp-excel';
	if(basla != ''){
		link += '?basla=' + basla + '&bitis=' + bitis;
	}
	location.href = link
}
</script>
<form action="" method="post" autocomplete="off">
	<div class="row">
		<div class="col-md-2">
			<input type="text" name="basla" id="basla" class="form-control" placeholder="Başlama Tarihi" value="{% if basla != '' %}{{ basla }}{% endif %}" />
		</div>
		<div class="col-md-2">
			<input type="text" name="bitis" id="bitis" class="form-control" placeholder="Bitiş Tarihi" value="{% if bitis != '' %}{{ bitis }}{% endif %}" />
		</div>
		<div class="col-md-2">
			<input type="submit" name="aralik" id="aralik" class="btn btn-success" value="Getir" />
		</div>
		<div class="col-md-2">
			<input type="button" name="aktar" id="aktar" class="btn btn-info" value="Excele Aktar" onclick="excelAktar();" />
		</div>
		<div class="col-md-2">
			<input type="button" name="kaydet" id="kaydet" class="btn btn-info" value="Kaydet" />
		</div>
	</div>
</form>

<div class="container">
<div class="row">
<div class="col-12">
<table id="ekipman" class="table table-striped table-bordered table-sm" style="width:100%">
	<thead>
		<tr>
			<th>BasTarih</th>
			<th>BasSaat</th>
			<th>BitTarih</th>
			<th>BitSaat</th>
			<th>DurZaman</th>
			<th>istasyon</th>
			<th>Açıklama</th>
			<th>Edit</th>

		</tr>
	</thead>
	<tbody>
		{% for hata in hatalar.items %}
			<tr>
				<td>{{ hata.firstDate}}</td>
				<td>{{ hata.firstClock}}</td>
				<td>{{ hata.lastDate}}</td>
				<td>{{ hata.lastClock}}</td>
				<td>{{ hata.time}}</td>
				<td>{{ hata.station}}</td>
				<td><input type="text" {{ hata.aciklama}} > </td>
				<td><a {{ hata.aciklama}} class='btn btn-primary'>Edit</a></td>
			</tr>
		{% endfor %}
	</tbody>
</table>

<nav aria-label="Page navigation example">
	<ul class="pagination">
		<li class="page-item"> <a href="{{ url_for('temp_kayit_listeleme', safya=hatalar.prev_num) }}" class="page-link {% if hatalar.page == 1 %}btn disabled{% endif %}">&laquo;</a></li>

		{% for sayfalar in hatalar.iter_pages(left_edge=3, right_edge=3) %}
			{% if sayfalar %}
				{% if sayfalar == hatalar.page %}
					<li class="page-item active"><a class="page-link" href="{{ url_for('temp_kayit_listeleme', sayfa = sayfalar) }}">{{ sayfalar }}</a></li>
				{% else %}
					<li class="page-item"><a class="page-link" href="{{ url_for('temp_kayit_listeleme', sayfa = sayfalar) }}">{{ sayfalar }}</a></li>
				{% endif %}
			{% else %}
				<li class="page-item disabled" id="example_ellipsis"><a href="#" class="page-link">…</a></li>
			{% endif %}
		{% endfor %}

		<li class="page-item"> <a href="{{ url_for('temp_kayit_listeleme', safya=hatalar.next_num) }}" class="page-link {% if hatalar.page == 1 %}btn disabled{% endif %}">&raquo;</a></li>
 	</ul>
</nav>
</div>
</div>
</div>
{% endblock %}

yardımcı olabilecek kimse yok mu?

Ajax, xmlhttprequest kavramlarını araştırırsanız bir seyler kafanızda canlanabilir.

Edit’e basildiginda ne oluyor?

Sunucuya istek gitmesi lazim, aciklama metnini de iceren.

AJAX (XHR/fetch) veya eski usul form ile yapilabilir.

edite basıldığında sunucuya istek gidiyor. Fakat ekran hataya geçiyor ve database tarafında hiç bit etki olmuyor

Nasil bir istek gidiyor?
Hangi ekran, nasil bir hataya geciyor? bkz: Soru Sorarken Sıkça Düşülen Hatalar #13

istek id numarasını hata sayfasının başında gösteriyor. Yani id sırasını. Bir çok dökümana baktım fakat işin içinden çıkamadım.

gelenId = request.form.get(‘id’) ile id yi çekiyorum
gelen_aciklama = request.form.get(‘aciklama’) ile giriş yapılan açıklamayı çekiyorum.

query = “”“SELECT * from {} where {} = {}”"".format(TempDuruslar, gelen_aciklama, gelenId) #(Class tablo adı, gelen_aciklama, gelenId) ile de o İd ye gitmeye çallışıyorum. Belkide gözden kaçan bir nokta var.

çaresizlik ve çözüm bulamamak gerçekten kötü bir durum. Siz değerli üstadların acil desteklerini bekliyorum.

404 dondugune gore route handler calismiyor

route’larda / eksik sanki? guncelle/<int> olmayacak mi?

Bu arada GET methodu da handle edildigi icin dogrudan browser’dan http…/templistX ve /guncelle/X’e gitmeyi deneyebilirsin, butona basmaya gerek yok.