Я работал над простым проектом веб-сайта, используя AngularJS и Flask .Это магазин, в котором пользователь проверяет, какие продукты он хочет приобрести, и когда он размещает свой заказ, все сохраняется в базе данных postgresql , и пользователь перенаправляется на соответствующую страницу (доставка выполнена или доставка не удалась из-за некоторыхвыпуск).Я использую try-кроме для обработки возможных ошибок в процессе хранения, и мне не удается перенаправить пользователя на соответствующий URL-адрес.После вставки значений в базу данных ничего не происходит.Я использую ng-view внутри main.html .
Вот мой server.py :
@app.route('/')
def mainPage():
return current_app.send_static_file('main.html')
@app.route('/shipping')
def shippingPage():
return current_app.send_static_file('main.html')
@app.route('/shippingfailed')
def shippingFailedPage():
return current_app.send_static_file('main.html')
@app.route('/placeorder', methods=['GET','POST'])
def placeOrder():
try:
data = request.get_json()
productsBought = data.pop('products')
order = orders(**data)
session.add(order)
session.flush()
mydict = {}
mydict["orderno"] = order.orderno
for product in productsBought:
mydict["productno"] = product
details = orderdetails(**mydict)
session.add(details)
session.flush()
session.commit()
return redirect(url_for('shippingPage'))
except Exception:
session.rollback()
raise
return redirect(url_for('shippingFailedPage'))
finally:
session.close()
Вот мой app.js :
angular.module('shoppingCart', ['ngRoute'])
.config(['$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider) {
$locationProvider.hashPrefix('');
$routeProvider
.when('/', {
templateUrl: 'static/cart.html'
})
.when('/cart', {
templateUrl: 'static/cart.html'
})
.when('/checkout', {
templateUrl: 'static/checkout.html'
})
.when('/shipping', {
templateUrl: 'static/shipping.html'
})
.when('/shippingfailed', {
templateUrl: 'static/shippingfailed.html'
});
}])
.controller('cartCtrl', ['$scope', '$http', '$filter', function($scope, $http, $filter){
this.placeOrder = function(){
vm.customer.price = $filter('calculateTotal')(this.cartItems);
this.jsonCustomer = JSON.stringify(vm.customer);
$http.post('/placeorder', this.jsonCustomer, {headers: {'Content-Type': 'application/json'} });
}
}])
Вот мой checkout.html :
<div class="text-right">
<a type="button"
class="btn btn-danger"
ng-if="vm.cartItems.length !=0"
ng-click="vm.placeOrder()"
href="#/placeorder">Place Order</a>
</div>
Итак, для суммированияэто немного больше, ожидаемое поведение, когда пользователь находится на checkout.html , и они нажимают на Разместить заказ они перенаправлены на / placeorder ,затем сервер обрабатывает запрос POST внутри try-exc и перенаправляет их в соответствии с этим.