ccoroom
ccoroom

Reputation: 689

Structure a flask with an angular.js

How to structure flask app with angular.js front-end? What is best practice? Should I use webserver like ngnix to host static files even when I'm working on development?

With flask default, I can serve index.html like below:

@app.route('/')
def index():
    return make_response(open('static/index.html').read())

or

@app.route('/')
def index():
    return send_from_directory('static', 'index.html')

But, there is a problem where I cannot point js files without '../static' prefix. I just want to point angular.js and all others like:

<script src="lib/angular/angular.js"></script>

not

<script src="../static/lib/angular/angular.js"></script>

Can I change all static file prefix in flask? Or is there a good way to solve this problem?

Thanks.

Upvotes: 6

Views: 3564

Answers (2)

SeanPlusPlus
SeanPlusPlus

Reputation: 9033

I think that best practices would be to let your web server serve all of your static content (angularjs, other js files, html, css, images, etc).

And then use some type of convention (i like going with the '/api' path) to serve and receive data to and from your flask server.

For example, in your apache config:

<VirtualHost *:80>
    DocumentRoot /path/to/static/files
    WSGIScriptAlias /api /path/to/flask/flask.wsgi
    ...
</VirtualHost>

Upvotes: 3

Blender
Blender

Reputation: 298166

If you really want to, you can:

app = Flask(__name__, static_url_path='')

Although I'd just use the absolute URL:

/static/lib/angular/angular.js

Upvotes: 4

Related Questions