我正在制作一个小应用程序,客户可以在日历中预约,但我不知道如何在数据库中保存约会,然后按日期显示给他们。
完整修改:
我已经创建了日历,其中包含一些垃圾约会,如下所示:
我想在数据库中保存约会,所以当任何客户端在提交后的任何日期点击时,ajax请求将被发送到我可以处理请求的视图,这里是 view.py :
@abonent_panel_route.route('/panel/make/appointment/')
@abonent_panel_route.route('/panel/make/appointment/', methods=['GET', 'POST'])
def get_appo():
# user = User.query.filter_by(id=current_user.id).first_or_404()
import json
getData = str(request.args.getlist('data'))
data = json.loads(getData)
if data :
print "\n\n\n\n" + str(data['title']) + "\n\n\n\n"
return jsonify({'success': data})
else:
print "\n\n\n\n" + str(len(data)) + "\n\n\n\n"
return jsonify({'error': 'No data!'})
以下是javascript
代码:
$(document).ready(function() {
var initialLocaleCode = 'ru';
var d = new Date();
var strDate = d.getFullYear() + "/" + (d.getMonth()+1) + "/" + d.getDate();
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay,listMonth'
},
defaultDate: strDate,
height: 650,
locale: initialLocaleCode,
navLinks: true, // can click day/week names to navigate views
selectable: true,
selectHelper: true,
select: function(start, end) {
var title = prompt('Event Title:');
var eventData;
if (title) {
eventData = {
title: title,
start: start,
end: end
};
$('#calendar').fullCalendar('renderEvent', eventData, true); // stick? = true
$(this).css({'background-color':'red'});
$.ajax({
type: 'POST',
url: '{{url_for("panel_abonent.get_appo")}}',
data: [eventData]
})
.done(function(data){
if(data.error){
console.log(eventData);
}
else {
console.log(eventData);
}
});
}
$('#calendar').fullCalendar('unselect');
},
editable: true,
eventLimit: true,
events: [
{
title: 'All Day Event',
start: strDate
},
{
title: 'Long Event',
start: '2017-04-18',
end: '2017-04-20'
},
{
id: 999,
title: 'Repeating Event',
start: '2017-04-20'
},
{
id: 999,
title: 'Repeating Event',
start: '2017-04-29'
},
]
});
$.each($.fullCalendar.locales, function(localeCode) {
$('#locale-selector').append(
$('<option/>')
.attr('value', localeCode)
.prop('selected', localeCode == initialLocaleCode)
.text(localeCode)
);
});
$('#locale-selector').on('change', function() {
if (this.value) {
$('#calendar').fullCalendar('option', 'locale', this.value);
}
});
});
在控制台内部,我可以看到所选日期的数据列表,如标题,开始和结束时间,这里是:
Object {title: "asfawg", start: r, end: r}
start : r{
"_ambigTime":true,
"_ambigZone":true,
"_d" : "Thu Apr 06 2017 06:00:00 GMT+0600 (+06)",
"_fullCalendar":true,
"_i":"2017/4/19",
"_isAMomentObject":true,
"_isUTC":true,
"_isValid":true,
"_locale":e,
"_offset":0,
"_pf":Object,
"__proto__":Object,
"title":"asfawg"
}
在 view.py 中,我已将字典转换为列表,以便从列表中轻松获取数据,因此您有一个键和值,就像您一样# 39;我在上面看到我打印标题打印&#34; \ n \ n \ n \ n&#34; + str(数据[&#39;标题&#39;])+&#34; \ n \ n \ n \ n&#34; 我应该得到标题的值 asfawg < / strong>,但我什么也没得到,请求总是返回无数据。,列表的长度返回 0 。
拜托,任何人都告诉我,我犯了哪个错误。
答案 0 :(得分:1)
我解决了这个问题,eventData本身就是一个不是列表的字典。
因此,如果我想在ajax请求中获取开始日期,然后将其发送到我的 view.py ,我会做类似的事情:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
我已经改变了一点我的观点,我添加了一个函数,它接受任何json参数并将其作为json字典返回,我使用data: {
'data': title,
'start': eventData['start']['_d'],
'end': eventData['end']['_d']
}
来完成这项工作,这里是函数:
flask_restful
接下来非常简单,只需按照以下顺序逐个获取参数:
def parse_arg_from_requests(arg, **kwargs):
from flask_restful import reqparse
parse = reqparse.RequestParser()
parse.add_argument(arg, **kwargs)
args = parse.parse_args()
return args[arg]