传递价值 to decorator

问题描述 投票:-2回答:2

我只是学习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 %}

我尝试使用id传递{{album.autor}},但我不能。这是我的py代码:

@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)

拜托,我希望有人能帮助我最好的问候

python html flask href
2个回答
0
投票

在你的视图/模板中,你试图通过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)

0
投票

我使用按钮发送值,带有参数的网址:

<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 == autor).all()for g in alb :print(“专辑{}技能点。”。格式(g))#测试db值

    return render_template("artist.html", autor=autor, alb=alb)
© www.soinside.com 2019 - 2024. All rights reserved.