使用Flask和Angular,如何使$ scope变量可用于python函数

时间:2014-08-29 03:00:32

标签: javascript python angularjs flask

我是一个初学者,所以我甚至不知道这样做的最佳方式或者我想要做什么,但是我正在制作一个事件发布应用程序,它将有一个标题像this jsfiddle中的月份和年份。

var calendar = angular.module('calendar', []);
calendar.controller('month_and_year', ['$scope', function ($scope) {
$scope.month = {{current_month}};
$scope.year = {{current_year}};
$scope.month_names = ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
$scope.add_one = function () {
    if ($scope.month == 12) {
        $scope.year++;
        $scope.month = 1;
    } else {
        $scope.month++
    }
};
$scope.sub_one = function () {
    if ($scope.month == 1) {
        $scope.year--;
        $scope.month = 12;
    } else {
        $scope.month--
    }
};
}]);

我的Python的重要部分如下:

import datetime
now = datetime.datetime.now()
current_month=now.month
current_year=now.year

def get_days_for_dates(year):
    dates = calendar.Calendar().yeardayscalendar(year)
    days_of_week=   ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
    dates_list=[]
    days_list=[]
    for quarter in dates:
        for month in quarter:
            for week in month:
                for i in range(len(week)):
                    dates_list.append(week[i])
                    days_list.append(days_of_week[i])
    return days_list, dates_list

calendar_tuple = get_days_for_dates(current_year)

所以我的问题是我想在我的Python中使用$ scope.year,其中current_year是使用日历模块并提出每个日期的星期几。将此信息提供给后端的最佳方法是什么?

1 个答案:

答案 0 :(得分:4)

您将需要使用AJAX请求将数据返回给服务器。这有两个部分:

第一个是在后端创建一个端点,它允许您发送请求并检索数据有效负载。

@app.route('/day-lookup', method=['GET'])
def day_lookup():
    year = request.args.get('year', None)
    # error handle here

    calendar_tuple = get_days_for_dates(year)
    # do something with it, return the list, etc.    

第二部分是使用Angular发送数据并处理响应。

var calendar = angular.module('calendar', []);
calendar.controller('month_and_year', ['$scope', '$http', function ($scope, $http) {
$scope.month = {{current_month}};
$scope.year = {{current_year}};
$scope.month_names = ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
$scope.add_one = function () {
    if ($scope.month == 12) {
        $scope.year++;
        $scope.month = 1;
    } else {
        $scope.month++
    }
};
$scope.sub_one = function () {
    if ($scope.month == 1) {
        $scope.year--;
        $scope.month = 12;
    } else {
        $scope.month--
    }
};
$scope.send_year = function () {
    // Add the year as a parameter to GET request to your URL
    var url = "http://foo.com/?year=" + $scope.year;
    // Send info to the server, then handle the result
    $http.get(url).then(function (result) {
        // Do something with the result
    });
};
}]);