Проверьте, мобильное ли устройство в Flask - PullRequest
0 голосов
/ 27 марта 2019

Я отображаю список файлов PDF, используя Flask и Materialize

<table class="highlight responsive-table">
    <thead>
        <th class="left-align"><i class="material-icons">call</i></th>
        <th class="left-align"><i class="material-icons">email</i></th>
        <th class="center-align"><i class="material-icons">picture_as_pdf</i></th>
    </thead>
    <tbody>
        {% for doc in docs %}
            <tr>
                <td>{{doc.phone if doc.phone}}</td>
                <td>{{doc.email if doc.email}}</td>
                <td>
                    <a href="#modal{{loop.index}}" class="modal-trigger"><i class="material-icons">open</i> Ouvrir</a>
                </td>
            </tr>
            <div class="modal" id="modal{{loop.index}}">
                <iframe src="/cv/{{doc.name}}" scrolling="no" width="100%" height="100%"></iframe>
            </div>
        {% endfor %}
    </tbody>
</table> 

enter image description here

PDF отображается в модальном окне с использованием iframe.

enter image description here

Когда я открываю страницу в мобильном телефоне и вместо того, чтобы показывать PDF в модальном режиме, мне предлагается загрузить PDF, как будто я пытался загрузить его напрямую. Поскольку я использую цикл for во Flask, я получаю приглашение на загрузку для каждого PDF. Я хотел бы знать, если есть способ проверить, является ли пользовательский агент мобильным, так что если это так, то я выведу ссылку на pdf вместо модального окна.

1 Ответ

1 голос
/ 27 марта 2019

Я решил проблему с помощью Flask-Mobility. Позволяет определить, является ли устройство мобильным

from flask_mobility import Mobility

...

app = Flask(__name__)
Mobility(app)

...

{% for doc in docs %}
    <tr>
        <td>{{doc.phone if doc.phone}}</td>
        <td>{{doc.email if doc.email}}</td>
        <td>
            {% if request.MOBILE %}
                <a href="/cv/{{doc.name}}" target="_blank"><i class="material-icons">open</i> Ouvrir</a>
            {% else %}
                <div class="modal" id="modal{{loop.index}}">
                    <iframe src="/cv/{{doc.name}}" scrolling="no" width="100%" height="100%"></iframe>
                </div>
                <a href="#modal{{loop.index}}" class="modal-trigger"><i class="material-icons">open</i> Ouvrir</a>
            {% endif %}
       </td>
    </tr>
{% endfor %} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...