[Flask] Help with simple example using AngularJS
Clint Olsen
clint.olsen at gmail.com
Wed Jan 31 18:32:15 EST 2018
Hi Adil:
I did try adding JSON.stringify() as you suggested, but this didn't seem to
have an effect on the behavior of the post contents.
Thanks,
-Clint
On Wed, Jan 31, 2018 at 3:11 PM, Adil Hasan <paradox2005 at gmail.com> wrote:
> Hello Clint,
> I wasn't using Flask one one of my backends (just plain cgi python), but I
> had to pass the JSON object as a string. Could you try out
>
> $http.post('/', JSON.stringify(data), config)
>
> and see if that gives you what you want?
>
> hth
> adil
>
> On Mon, Jan 29, 2018 at 04:52:08PM -0800, Clint Olsen wrote:
> > Hi:
> >
> > I'm new to Flask and Angular and only done a little web-based
> programming,
> > so please forgive my lack of understanding. I've just cobbled together
> > examples from Flask as well as some examples online to come up with the
> > following.
> >
> > I am interested in the most basic functionality of modifying a web form
> and
> > capturing that in the back-end to prove I can get data at least in one
> > direction:
> >
> > *static/app.js*:
> >
> > var app = angular.module('myApp', []);
> >
> > app.controller('formCtrl', function($scope, $log, $http) {
> > $scope.firstName = "John";
> >
> > $scope.SendData = function () {
> > var data = { 'foo': $scope.firstName };
> >
> > var config = {
> > headers : {
> > 'Content-Type':
> > 'application/x-www-form-urlencoded;charset=utf-8;'
> > }
> > }
> >
> > $http.post('/', data, config)
> > .success(function(results) {
> > $log.log(results);
> > })
> > .error(function(error) {
> > $log.log(error);
> > });
> > };
> > });
> >
> > *static/index.html*:
> >
> > <!doctype html>
> > <html>
> > <head>
> > <script src="
> > https://ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular.min.js
> > "></script>
> > <script src="
> > http://code.angularjs.org/1.5.3/angular-route.min.js"></script>
> > <script src="/static/app.js"></script>
> > <link rel="stylesheet" href="/static/style.css" />
> > </head>
> > <body>
> > <div ng-app="myApp" ng-controller="formCtrl">
> > <form>
> > First Name: <input type="text" ng-model="firstName">
> >
> > <button data-ng-click="SendData()">
> > Send
> > </button>
> > </form>
> >
> > <h1>You entered: {{firstName}}</h1>
> >
> > <div>
> > </body>
> > </html>
> >
> > *app.py*:
> >
> > from flask import Flask, request, send_file
> >
> > app = Flask(__name__)
> >
> > @app.route('/', methods=['GET', 'POST'])
> > def index():
> > print('Request: %s' % request.method)
> > if request.method == 'POST':
> > data = request.form.to_dict()
> > print('First name from form is %s' % data)
> > return 'OK'
> > else:
> > return send_file("static/index.html")
> >
> > if __name__ == "__main__":
> > app.run(host='0.0.0.0', debug=True)
> >
> > This code (sort of) works, but the message I get from index() is kind of
> > weird, so maybe I'm not packaging the data payload correctly? In this
> > example I just populate the form with a "C":
> >
> > Flask log:
> >
> > Request: GET
> > 127.0.0.1 - - [29/Jan/2018 16:40:11] "GET /? HTTP/1.1" 200 -
> > 127.0.0.1 - - [29/Jan/2018 16:40:11] "GET /static/app.js HTTP/1.1" 200 -
> > 127.0.0.1 - - [29/Jan/2018 16:40:11] "GET /static/style.css HTTP/1.1"
> 200 -
> > Request: POST
> > First name from form is {'{"foo":"C"}': ''}
> > 127.0.0.1 - - [29/Jan/2018 16:40:16] "POST / HTTP/1.1" 200 -
> >
> > I'm not not quite sure why the key/value pair is embedded in a dictionary
> > as the key with an empty value.
> >
> > Any pointers would be much appreciated!
> >
> > Thanks,
> >
> > -Clint
>
> > _______________________________________________
> > Flask mailing list
> > Flask at python.org
> > https://mail.python.org/mailman/listinfo/flask
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/flask/attachments/20180131/24f98595/attachment-0001.html>
More information about the Flask
mailing list