Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
783 views
in Technique[技术] by (71.8m points)

angularjs unable to find templates directory, flask as backend

I am using flask as backend and angularjs on client-side

my directory structure:

dew:

  ->app.py

  ->templates
    ->hello.html
    ->test.html

  ->static
    ->js
      ->directives.py
    ->lib
      ->angular.js

my app.py file:

from flask import Flask, make_response,render_template
@app.route("/aboutUs")
def aboutUs():
    return render_template("test.html", title="test page")

my directives.py file :

angular.module('components',[])
    .directive("helloWorld",function($scope,$log){
        $scope.$log = $log;
        return{
            restrict:"A",
            templateUrl:"templates/hello.html"
        }
    })

angular.module('testApp',['components'])

Flask was able to render the test.html template properly, but angular was showing hello.html, template not found error

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

1. Jinja template

If hello.html contains Jinja2 markup then it is a template and needs to be rendered by Flask. Add an @app.route to render it.

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

Then point to the hello URL in the Angular directive.

templateUrl: "{{ url_for('hello'}} }}"

2. Angular template

If the file contains only HTML (no Jinja2 markup), then it is not a template. It should not be in the templates folder but in the static folder; like static/angular_templates/hello.html.

Then point to the static file in the directive.

templateUrl: "{{ url_for('static', filename='angular_templates/hello.html') }}"

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...