drno-reg
@drno-reg
см не кратко

Как правильно обновлять js в endpoint Flask?

Здравствуйте.

у меня есть endpoint

views.py

@webapp.route('/chart_plotly', methods=['GET', 'POST'])
def chart_plotly():


    rng = pd.date_range('1/1/2011', periods=7500, freq='H')
    ts = pd.Series(np.random.randn(len(rng)), index=rng)

    graphs = [
        dict(
            data=[
                dict(
                    x=[1, 2, 3, 4, 5, 6, 7],
                    y=[11, 22, 33, 44, 55, 66, 77],
                    type='scatter'
                ),
            ],
            layout=dict(
                title='первый график'
            )
        ),

        dict(
            data=[
                dict(
                    x=[1, 3, 5, 2],
                    y=[10, 50, 30, 15],
                    type='bar'
                ),
            ],
            layout=dict(
                title='второй график'
            )
        ),

        dict(
            data=[
                dict(
                    x=ts.index,  # Can use the pandas data structures directly
                    y=ts
                )
            ],
            layout=dict(
                title='третий график'
            )
        )
    ]

    # Add "ids" to each of the graphs to pass up to the client
    # for templating
    ids = ['graph-{}'.format(i) for i, _ in enumerate(graphs)]

    # Convert the figures to JSON
    # PlotlyJSONEncoder appropriately converts pandas, datetime, etc
    # objects to their JSON equivalents
    graphJSON = json.dumps(graphs, cls=plotly.utils.PlotlyJSONEncoder)

    # return 'Hello %s!' % current_user.name
    return render_template('chart_plotly.html', ids=ids, graphJSON=graphJSON)


html.template

chart_plotly.html

{% extends 'base.html' %}

{% block title %}
WebApp (c)
{% endblock %}
{% block head %}


{% endblock %}
{% block body %}

{% for id in ids %}
<h3>{{id}}</h3>
<div id="{{id}}"></div>
{% endfor %}

<footer>
    <!-- D3.js -->
    <script src="{{ url_for('static', filename='d3-6.2/js/d3.min.js') }}"></script>
    <!-- jQuery -->
    <script src="{{ url_for('static', filename='jquery-2.1.4/js/jquery-2.1.4.min.js') }}"></script>
    <!-- Plotly.js -->
    <script src="{{ url_for('static', filename='plotly-1.52.3/js/plotly-basic.js') }}"></script>

    <script type="text/javascript">

        var graphs = {{graphJSON | safe}};
        var ids = {{ids | safe}};

        console.log(graphs)
        console.log(ids)

        for(var i in graphs) {
            Plotly.plot(ids[i], // the ID of the div, created above
                graphs[i].data,
                graphs[i].layout || {});
        }

    </script>
</footer>



</form>
{% endblock %}


появляются 3 графика - все нормально, НО потом я редактирую инфу

dict(
            data=[
                dict(
                    x=[1, 2, 3, 4, 5, 6, 7],
                    y=[11, 22, 33, 44, 55, 66, 77],
                    type='scatter'
                ),
            ],
            layout=dict(
                title='первый график'
            )
        ),


обновляю по F5 страницу в Google Chrome и график не обновляется - только после рестарта полностью

gunicorn -w 1 -b 0.0.0.0:8338 wsgi:webapp

Как правильно обновлять js в endpoint Flask?
  • Вопрос задан
  • 65 просмотров
Пригласить эксперта
Ответы на вопрос 1
@iddqda
network engineer, netdevops
попробуй
export TEMPLATES_AUTO_RELOAD
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы