Передача значения <a>декоратору - PullRequest
0 голосов
/ 09 сентября 2018

Я только изучаю Python, использую Flask и у меня проблема: Я пытаюсь передать значения с одной страницы моему декоратору, но это значение исходит и у него нет свойства name. Это мой HTML:

<table border="4">
<tr>
    <td>ID</td>
    <td>Name</td>
    <td>Autor</td>
    <td>Year</td>
    <td>Genre</td>
    <td>Excluir</td>
    <td>Actualizar</td>
</tr>
{% for album in listalbumes %}
<tr>
    <td>{{ album._id }}</td>
    <td>{{ album.name }}</td>
    <td><a href="/artist/{{ album.autor }}" id="autor" >{{ album.autor }}</a></td>
    <td>{{ album.year }}</td>
    <td>{{ album.name_genre }}</td>
    <td><a href="/excluir/{{ album._id }}">X</a></td>
    <td><a href="/actualizar/{{ album._id }}">Actualizar</a></td>
</tr>
{% endfor %}

Я пытаюсь передать {{album.autor}} с идентификатором, но не могу. И это мой код:

@app.route('/artist/<string:autor>',  methods=['GET', 'POST'])
def artista(autor):
    autor = request.form.get("autor")
    alb = db.session.query(Album._id, Album.name, Album.autor, Album.year, 
    Album.media, Album.continent).filter(Album.autor == autor).all()
    if request.method == "GET":

        for g in alb:
            print("Album {} skill points.".format(g)) # testing db values, It works if I set manually values

        if alb:
            return render_template("artist.html", alb=alb)

Пожалуйста, я надеюсь, что кто-нибудь может мне помочь С наилучшими пожеланиями

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

Я отправляю значение с помощью кнопки с URL-адресом с параметрами:

<table border="4">
<tr>
    <td>ID</td>
    <td>Name</td>
    <td>Autor</td>
    <td>Year</td>
    <td>Genre</td>
    <td>Excluir</td>
    <td>Actualizar</td>
</tr>
{% for album in listalbumes %}
<tr>
    <td>{{ album._id }}</td>
    <td>{{ album.name }}</td>
    <!-- <td><a href="/artist/{{ album.autor }}"id="autor" >{{ album.autor }}</a></td> -->  <!-- esta vaina no funciona.... no se por que -->
    <!-- para que funcione enviamos los datos -->
    <td><input type="submit" value="{{ album.autor }}" name="autor" onclick="window.location.href='/artist/artist?autor={{ album.autor }}'" /></td>
    <td>{{ album.year }}</td>
    <td>{{ album.name_genre }}</td>
    <td><a href="/excluir/{{ album._id }}">X</a></td>
    <td><a href="/actualizar/{{ album._id }}">Actualizar</a></td>
</tr>
{% endfor %}

В моем коде я получаю значение с помощью "request.args.get"

@app.route('/artist/<string:autor>',  methods=['GET', 'POST'])
def artista(autor):
if request.method == "GET":
    print('Im in GET')
    # autor = request.form.get("autor")
    autor = request.args.get('autor')
    print ("Autor=> ", autor)

Спасибо за вашу помощь! alb = db.session.query (Album._id, Album.name, Album.autor, Album.year, Album.media, Album.continent) .filter (Album.autor == автор) .all () для г в альб: print ("Альбом {} очков навыков.". формат (g)) # тестирование значений в БД

    return render_template("artist.html", autor=autor, alb=alb)
0 голосов
/ 09 сентября 2018

В вашем представлении / шаблоне вы пытаетесь перебрать listalbumes, но я не вижу, чтобы это передавалось где-либо.

Так что я думаю, что вам нужно передать список альбомов следующим образом:

@app.route('/artist/<string:autor>',  methods=['GET', 'POST'])
def artista(autor):
    autor = request.form.get("autor")

    if request.method == "GET": # Handle GET request
        alb = db.session.query(Album._id, Album.name, Album.autor, Album.year,
                               Album.media, Album.continent).filter(Album.autor=autor)

        if alb.exists(): # Handle if matching album list exists
            return render_template("artist.html", {"listalbumes": alb})
        else: # Handle if matching albumlist is not found
            return render_template("artist.html", {"listalbumes": []})

    else: # Handle POST request
        Album.create(autor)
        return Response("Created", status=201)
...