Создание маршрутов динамически в зависимости от данных - PullRequest
0 голосов
/ 21 февраля 2020

Можно ли сгенерировать маршрут в зависимости от данных из базы данных? В настоящее время у меня есть один общий маршрут:

@main.route('/profile’)
def profile(user_name):

    return render_template('profile.html', name=user_name)

и

@main.route('/video_stream')
def video_stream():
    camera = CameraHandler(cv2.VideoCapture(0))
    camera.start()
    camera_threads[stream_id] = camera

    return Response(camera.gen(), mimetype='multipart/x-mixed-replace; boundary=frame')

Где профиль. html выглядит так:

{% extends "base.html" %}

{% block content %}
<div class="container has-text-centered">
  <h1 class="title">
    Welcome, {{ name }}!
  </h1>
  <h3 class="title">
    This is a stream from your camera
  </h3>
  <img src="{{ url_for('main.video_stream') }}">
</div>
{% endblock %}

Работает нормально, как ожидается. Однако теперь я хочу иметь новый маршрут, созданный динамически для указанного пользователя c. Поэтому, если в базе данных у меня есть пользователь с именем «Test» с id = 1, то если пользователь войдет в систему, маршрут должен выглядеть следующим образом:

/profile/Test/stream?id=1

Я предполагаю, что изменение моих маршрутов на что-то подобное сделать работу:

@main.route('/profile/<string:user_name>')
def profile(user_name):

И

@main.route('/video_stream/<int:stream_id>')
def video_stream(stream_id):

Но, насколько я знаю ... не знаю, как это правильно объяснить ... других маршрутов не будет, потому что это создаст только один маршрут. Например: Войдите в систему как пользователь Test с идентификатором 1, у меня будет страница с маршрутом / профилем / Test? Id = 1, и все будет работать правильно. Но затем, когда я буду входить на другой компьютер с другой учетной записью, скажем, Test2 с идентификатором 2, тогда предыдущий маршрут прекратит существовать, а новый / profile / Test2? Id = 2 будет единственным здесь.

Итак, можно динамически создавать новые маршруты, но с сохранением ранее созданных?

1 Ответ

0 голосов
/ 21 февраля 2020

Итак, если я правильно понял, вы хотите, чтобы только авторизованный пользователь имел доступ к /profile/Test?id=user_id? На самом деле это не вопрос маршрутизации, это скорее вопрос аутентификации. То, что вы хотите на странице своего профиля, вероятно, выглядит примерно так:

from flask import request, session

@main.route('/profile/<string:user_name>')
  if request.args.get('id') == session.get('user_id')
    pass # proceed

В приведенном выше примере я предположил, что, когда пользователь успешно входит в ваше приложение, вы устанавливаете сеанс с именем user_id с помощью идентификатор пользователя. Таким образом, пользователь сможет просматривать только профиль, где? Id = соответствует собственному идентификатору пользователя.

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