В настоящее время я работаю над веб-приложением, для которого внутренняя часть была разработана с использованием Django & Python, а внешняя часть была разработана с использованием AngularJS.
На одной из форм есть формастраницы во внешней части, которые пользователь может использовать для экспорта данных, которые были записаны и сохранены во внутренней части, в электронную таблицу.
Все данные, записанные во внутренней части, являются «чувствительными ко времени», ив настоящее время в бэкэнде установлен только один часовой пояс (UTC).Я хочу «создать» настройки для добавления нескольких новых часовых поясов, чтобы записанные данные можно было экспортировать в разные часовые пояса.
Часовой пояс установлен в project / apps / appAbc / abc / settings.pyс помощью:
class Production(Settings):
...
TIME_ZONE = 'UTC'
...
Форма «Экспорт» имеет несколько полей (предустановка, тип данных, сортировка данных по количеству / периоду, тип файла для экспорта), и я только что добавил «Часовой пояс»в раскрывающемся списке:
<section class="panel panel-brand export-page panel-no-border-radius">
<div class="panel-body panel-body-fixed-md">
...
<div class="divider"></div>
<div class="row">
<label data-i18n="Timezone:" class="col-sm-3"></label>
<div ul-timezone-picker callback="selectTimezone" class="col-sm-9" default-label={{presetTimezone}} btn-class="btn-xs btn-default"></div>
</div>
<div class="divider"></div>
<div class="row" ul-scroll-to-me="scrollToFtype">
<label data-i18n="File type:" class="col-sm-3"></label>
<div ul-options-menu class="col-sm-9" options="ftypeOptions"
callback="selectFType" warning="{{ftypeWarning}}"
btn-class="btn-xs btn-default" default-idx="0" default-label="{{presetFtype}}"></div>
</div>
<div class="divider divider-lg"></div>
<div class="row">
<div class="col-sm-4"></div>
<div class="col-sm-4">
<button class="btn btn-sm btn-block btn-brand" ng-hide="!btnDisabled" ng-click="setDownloadUrl(true)">
<i class="ti-export"></i>
<span data-i18n="Export"></span>
</button>
<a class="btn btn-sm btn-block btn-brand" role="button" target="_blank" href="{{downloadURL}}" ng-hide="btnDisabled">
<i class="ti-export"></i>
<span data-i18n="Export"></span>
</a>
</div>
</div>
</div>
и в Pages / directive.js я добавил несколько часовых поясов для контроллера ulTimezonePicker
:
.directive('ulTimezonePicker', function() {
return {
...
controller: function ($scope) {
$scope.options = [{label: 'UTC', value: 0},
// Add in other timezones
{label: 'GMT', value: 1},
{label: 'BST', value: 2},
];
...
...
})
Функция selectTimezone()
, вызываемая полем ul-timezone-picker
в форме, определяется в проекте / libs / front / app / scripts / app / pages / exportCtrl.js с помощью:
angular.module('app.pages').controller('ExportCtrl',
function(...) {
...
$scope.selectTimezone = function(option){
if(option) {
$scope.timezone = option;
if(option.label != $scope.presetTimezone) {
$scope.presetTimezone = undefined;
}
}
};
...
}
}
Итак,у меня вопрос: как заставить функцию selectTimezone()
фактически изменить значение переменной TIME_ZONE
, определенной в settings.py?
Я попытался объявить экземпляр переменной внутри функции с помощью:
Production.TIME_ZONE = $scope.timezone;
Но когда я делаю это, и просматриваю страницу, на которой есть форма в бровиser, консоль браузера выдает мне сообщение об ошибке:
ReferenceError: Производство не определено
Как я могу получить этот класс Python из функции AngularJS, чтобы изменить значение одной из ее переменных?