是否有正确的方法将日期传递(例如,' 2015-07-28')作为烧瓶中的url参数,例如整数:
//as soon as you create $scope.campaign, copy it to $scope.original
$scope.original = angular.copy($scope.campaign);
//in your update function
$scope.updates = _.pick($scope.campaign, function(value, key, object){ return $scope.campaign[key] != $scope.original[key] });
Campaign.update({id: $scope.campaign.id}, $scope.updates).$promise.then(function () {
// success
}, function () {
//error
});
我需要类似的东西:
@app.route("/product/<int:product_id>", methods=['GET', 'POST'])
答案 0 :(得分:12)
不是开箱即用的,但您可以注册自己的custom converter:
from datetime import datetime
from werkzeug.routing import BaseConverter, ValidationError
class DateConverter(BaseConverter):
"""Extracts a ISO8601 date from the path and validates it."""
regex = r'\d{4}-\d{2}-\d{2}'
def to_python(self, value):
try:
return datetime.strptime(value, '%Y-%m-%d').date()
except ValueError:
raise ValidationError()
def to_url(self, value):
return value.strftime('%Y-%m-%d')
app.url_map.converters['date'] = DateConverter
使用自定义转换器有两个好处:
您现在可以使用url_for()
轻松构建网址;只需传入该参数的date
或datetime
对象:
url_for('news', selected_date=date.today())
格式错误的日期导致网址为404;例如/news/2015-02-29
不是有效日期(今年2月29日没有),因此路线不会匹配,而Flask会返回NotFound响应。
答案 1 :(得分:2)
一个适合我的简单例子:
@app.route('/news/<selected_date>', methods=['GET'])
def my_view(selected_date):
selected_date = datetime.strptime(selected_date, "%Y-%m-%d").date()
答案 2 :(得分:-1)
在这种情况下有效,因为日期格式中没有斜杠。否则,它将被视为URL的一部分。