我只是学习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)
拜托,我希望有人能帮助我最好的问候
在你的视图/模板中,你试图通过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)
我使用按钮发送值,带有参数的网址:
<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)