Saya mencoba membuat url dinamis di jinja dan saya harus meneruskan nilai yang dipilih dari halaman html ke labu untuk membuat halaman web baru.

Saya memiliki topik di menu tarik-turun dan ketika saya mengklik tautan, informasi harus diteruskan ke labu yang tautannya dipilih dan apa yang akan ditampilkan pada halaman itu tetapi terjadi kesalahan yang mengatakan tidak dapat membangun titik akhir untuk url. Bantuan apa pun akan sangat dihargai. Terima kasih sebelumnya!!

File dashboard.py ada di sini:

@app.route('/')
def home():
     #topic is a list of topics for the dropdown menu
     return render_template("home.html",topic=topics)
@app.route('/topic', methods=['GET', 'POST'])
def topic_func():
    result = request.args.get('type')
    print(result) #should print what was the topic that was clicked in the dropdown menu 
    return render_template(index.html, value=result)

Ini adalah home.html dan saya juga tidak bisa mendapatkan nilai type. Itu mencetak {{each}} ketika seharusnya mencetak nilai topik yang dipilih. Bagaimana saya bisa memecahkan masalah ini?:

<div class="dropdown-content">

{% for each in topics %}

      <a href="{{url_for('topic', type='{{each}}')}}">{{each}}</a>

{% endfor %}

</div>
-1
Mansi Dhingra 15 Mei 2020, 12:22

1 menjawab

Jawaban Terbaik

Anda sebaiknya menyusun kode Anda seperti ini:

<div class="dropdown-content">

    {% for each in topics %}

          <a href="{{url_for('topic_func', type='')}}{{each}}">{{each}}</a>

    {% endfor %}

</div>

Mencatat dua hal:

  1. Di url_for saya mengganti rute topic dengan fungsi topic_func. Ini karena url_for mencari fungsi. Jadi, Anda harus memberikan nama fungsi.

  2. Saya memindahkan nilai untuk mengirim {{each}}, setelah dua kurung kurawal url_for. Alasannya adalah dengan membiarkannya di dalam tanda kutip, fungsi url_for tidak memahaminya sebagai variabel jinja tetapi menganggap bahwa itu adalah nilai persis yang ingin Anda kirim. Jadi Anda akan memiliki, di sisi python:

Ular piton:

@app.route('/topic', methods=['GET', 'POST']) 
def topic_func():
    result = request.args.get('type')
    print(result)  # {{each}}
1
Tobin 15 Mei 2020, 10:04