Python Flask页面无法使用外部CSS和Javascript进行渲染

时间:2016-11-12 06:23:50

标签: javascript python css flask jinja2

我创建了一个Python Flask应用程序,其模板在一个HTML文件中包含HTML / CSS / Javascript。这很好。

我想将CSS和Javascript文件分成他们自己的文件。我这样做并修改了HTML文件以容纳CSS和Javascript文件的新位置。

但是页面不会呈现。我找到了一个“找不到”的#39;我打开它时的错误页面。

我想将CSS和Javascript分开,这样我就可以使用Javascript而无需管理HMTL和CSS。任何帮助将不胜感激。

以下是原始的HTML文件:

{% extends "base.html" %}

{% block title %}test.com{% endblock %}

{% block page_content %}

    <title>cytoscape-dagre.js demo</title>

    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1">

    <script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
    <script src="http://cytoscape.github.io/cytoscape.js/api/cytoscape.js-latest/cytoscape.min.js"></script>

    <!-- for testing with local version of cytoscape.js -->
    <!--<script src="../cytoscape.js/build/cytoscape.js"></script>-->

    <script src="https://cdn.rawgit.com/cpettitt/dagre/v0.7.4/dist/dagre.min.js"></script>
    <script src="https://cdn.rawgit.com/cytoscape/cytoscape.js-dagre/1.1.2/cytoscape-dagre.js"></script>

    <style>
        body {
            font-family: helvetica;
            font-size: 14px;
        }

        #cy {
            width: 100%;
            height: 100%;
            position: absolute;
            left: 0;
            top: 0;
            z-index: 999;
        }

        h1 {
            opacity: 0.5;
            font-size: 1em;
        }
    </style>

    <script>
        $(function(){

            var cy = window.cy = cytoscape({
                container: document.getElementById('cy'),

      boxSelectionEnabled: false,
      autounselectify: true,

                layout: {
                    name: 'dagre'
                },

                style: [
                    {
                        selector: 'node',
                        style: {
                            'content': 'data(id)',
                            'text-opacity': 0.5,
                            'text-valign': 'center',
                            'text-halign': 'left',
                            'background-color': '#11479e'
                        }
                    },

                    {
                        selector: 'edge',
                        style: {
                            'width': 4,
                            'target-arrow-shape': 'triangle',
                            'line-color': '#9dbaea',
                            'target-arrow-color': '#9dbaea',
                            'curve-style': 'bezier'
                        }
                    }
                ],

                elements: {
                    nodes: [
                        { data: { id: 'n0' } },
                        { data: { id: 'n1' } },
                        { data: { id: 'n2' } },
                        { data: { id: 'n3' } },
                        { data: { id: 'n4' } },
                        { data: { id: 'n5' } },
                        { data: { id: 'n6' } },
                        { data: { id: 'n7' } },
                        { data: { id: 'n8' } },
                        { data: { id: 'n9' } },
                        { data: { id: 'n10' } },
                        { data: { id: 'n11' } },
                        { data: { id: 'n12' } },
                        { data: { id: 'n13' } },
                        { data: { id: 'n14' } },
                        { data: { id: 'n15' } },
                        { data: { id: 'n16' } }
                    ],
                    edges: [
                        { data: { source: 'n0', target: 'n1' } },
                        { data: { source: 'n1', target: 'n2' } },
                        { data: { source: 'n1', target: 'n3' } },
                        { data: { source: 'n4', target: 'n5' } },
                        { data: { source: 'n4', target: 'n6' } },
                        { data: { source: 'n6', target: 'n7' } },
                        { data: { source: 'n6', target: 'n8' } },
                        { data: { source: 'n8', target: 'n9' } },
                        { data: { source: 'n8', target: 'n10' } },
                        { data: { source: 'n11', target: 'n12' } },
                        { data: { source: 'n12', target: 'n13' } },
                        { data: { source: 'n13', target: 'n14' } },
                        { data: { source: 'n13', target: 'n15' } },
                    ]
                },
            });

        });
    </script>


<body>
    <h1>cytoscape-dagre demo</h1>

    <div id="cy"></div>

</body>

{% endblock %}

虽然这里的新代码没有按照我的预期运行:

{% extends "base.html" %}

{% block title %}test.com{% endblock %}

{% block page_content %}


    <title>cytoscape-dagre.js demo</title>

    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1">

    <script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
    <script src="http://cytoscape.github.io/cytoscape.js/api/cytoscape.js-latest/cytoscape.min.js"></script>

    <!-- for testing with local version of cytoscape.js -->
    <!--<script src="../cytoscape.js/build/cytoscape.js"></script>-->

    <script src="https://cdn.rawgit.com/cpettitt/dagre/v0.7.4/dist/dagre.min.js"></script>
    <script src="https://cdn.rawgit.com/cytoscape/cytoscape.js-dagre/1.1.2/cytoscape-dagre.js"></script>

    <script type="text/javascript" src="{{ url_for('static', filename='javascript/graph3.js') }}"></script>
    <link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='styles/style.css') }}">

    <body>
         <h1>cytoscape-dagre demo</h1>

         <div id="cy"></div>

    </body>

{% endblock %}

3 个答案:

答案 0 :(得分:3)

解决方案是确保烧瓶应用程序有一个视图。

view.py文件中缺少以下代码。

@main.route('/graph4', methods=['GET'])
def graph4():
    return render_template('graph4.html')

否则html,js和css是正确的。

答案 1 :(得分:1)

reltypehref之后的等号后关闭这些空格。

<link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='styles/style.css') }}">

<link rel="stylesheet" type="text/css" href="{{ url_for('static',filename='styles/style.css') }}">

看起来好像是罪魁祸首。

答案 2 :(得分:0)

我看到的唯一区别是你的脚本在工作案例中的样式之后和破坏之前出现。