Во Flask, как я могу перенаправить на профиль, на который нажимают? - PullRequest
0 голосов
/ 27 июня 2018

Я очень новичок во Фляске. У меня есть база данных MySQL и шаблон. Допустим, у меня есть 3 изображения

 <a href="#"><div><img src= pathOfImage id="profile1"/></div></a>
 <a href="#"><div><img src= pathOfImage id="profile2"/></div></a>
 <a href="#"><div><img src= pathOfImage id="profile3"/></div></a>

Идентификатор каждого изображения (profile1, profile2, profile3) является первичным ключом некоторых таблиц в базе данных. Я хочу найти значения соответствующих атрибутов этого кортежа, используя первичный ключ. Затем загрузите эти значения в шаблон из кортежей.

И у меня есть следующий код в Python:

 from flask import *
 @app.route("/")
 def index():
 return render_template("index.html")

 @app.route('/experts')
 def route1():
    return render_template("experts.html", data=data)

Фрагмент HTML-кода, который я дал выше, находится в expert.html. Я почти SQL-запроса, который не был указан выше, данные по второму параметру в render_template в route1 () является кортеж SQL, который генерирует все эти изображения и ID.

Я попытался поместить кнопку рядом с изображениями и вместо нее присвоить ей идентификатор. Затем передайте идентификатор скрипту python как переменную, используя Ajax, и получите кортеж SQL.

Однако это не самая сложная часть. Сложная часть - это создание нового маршрута и загрузка контента. Я попытался создать новый маршрут, используя app.route и передать данные во второй параметр render_template. Но он не перенаправил на новый профиль, и метод был вызван еще до того, как я щелкнул по профилю.

ранее я использовал кнопку для получения идентификатора:

 <html>
  <body>
    <a href="{{ url_for('route2') }}"> <button id='1'>Button1</button></a>
    <a href="{{ url_for('route2') }}"><button id='2'>Button2</button></a>
    <a href="{{ url_for('route2') }}"><button id='3'>Button3</button></a>
  </body>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"</script>
<script>
  $(document).ready(function() {
     $('button').click(function(event) {
       var the_id = event.target.id;
       $.ajax({
       url: "/get_id",
       type: "get",
       data: {the_id: the_id},
       success: function(response) {

      },
       error: function(xhr) {

    }
   });           
})});
</script>

и я использовал их для создания нового шаблона:

 import flask
 from flask import *
 from flaskext.mysql import MySQL

 @app.route("/")
 def index():
    return render_template("index.html")

 @app.route('/experts')
 def route1():
      return render_template("experts.html", data=data)

 @app.route('/get_id')
 @app.route('/profile')
 def route2():
      button_id '"' + flask.request.args.get('the_id') + '"'
      //some code here to get the tuples that I need "client_info" and 
      //"skill_info" variable below
      return render_template("profile.html", client_info=client_info, 
      skill_info=skill_info)

Надеюсь, кто-нибудь даст новый старт. Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Вместо передачи информации по ajax вы можете передать ее через URL-адрес маршрута.

experts.html

<a href="{{ url_for('route2') }}/profile1"><div><img src="pathOfImage"></div></a>
<a href="{{ url_for('route2') }}/profile2"><div><img src="pathOfImage"></div></a>
<a href="{{ url_for('route2') }}/profile3"><div><img src="pathOfImage"></div></a>

маршруты фляг

import flask
from flask import *
from flaskext.mysql import MySQL

@app.route("/")
def index():
    return render_template("index.html")

@app.route('/experts')
def route1():
    return render_template("experts.html", data=data)

@app.route('/profile/<id>')
def route2(id):
    # id variable contains user profile id string as per user click
    # depending on id set variables client_info and skill_info and render
    return render_template("profile.html", client_info=client_info, skill_info=skill_info)
0 голосов
/ 27 июня 2018
{% for profile in profiles %}
<a href="/profile?the_profile={{ profile.id }}"><img src="{{profile.img}}"></a>
{% endfor %}

... наверное? может быть?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...