Flask 如何在页面内部显示日历?
我在Flask 如何在页面内部显示日历?,flask,fullcalendar,jinja2,flask-socketio,Flask,Fullcalendar,Jinja2,Flask Socketio,我在Flask中创建了一个小应用程序,允许用户在日历上预订 我只希望订阅的用户进行预约,如果当前用户不是订阅者,您会收到一条消息,代替日历,上面写着“您必须是订阅者才能制作一本书”,否则会出现日历 我使用SocketIO在DOM中进行实时更改,在我的视图中,我创建了两个独立的emit,第一个是在用户订阅之后,第二个是如果用户取消订阅。如果他订阅了日历,日历应立即出现,如果他取消订阅,日历也应在发送套接字时消失 这是我的视图。py用于订阅和取消订阅后: @client_route.route('/
Flask
中创建了一个小应用程序,允许用户在日历上预订
我只希望订阅的用户进行预约,如果当前用户
不是订阅者,您会收到一条消息,代替日历,上面写着“您必须是订阅者才能制作一本书”,否则会出现日历
我使用SocketIO
在DOM中进行实时更改,在我的视图中,我创建了两个独立的emit,第一个是在用户订阅之后,第二个是如果用户取消订阅。如果他订阅了日历,日历应立即出现,如果他取消订阅,日历也应在发送套接字时消失
这是我的视图。py用于订阅和取消订阅后:
@client_route.route('/client/cat-<dir_code>/subscribe/<int:worker_id>', methods=['POST'])
@only_client
@is_active_client
def subscribe_worker(worker_id):
client = Client.query.filter_by(tele=session.get('client_phone') ,name=session.get('client_logged_in'), family=session.get('client_family')).first_or_404()
worker = Worker.query.filter_by(id=worker_id).first_or_404()
if not client.is_subscriber(worker.id):
client.subscribe(worker.id)
client.in_chat = True
db.session.add(client)
db.session.commit()
socketio.emit('show_calendar', namespace='/notifications-{}-{}'.format(client.name, client.family)
)
return jsonify({'success': Thanks for subscription.'})
@client_route.route('/client/cat-<dir_code>/subscribe/<int:worker_id>', methods=['POST'])
@only_client
@is_active_client
def unsubscribe_worker(worker_id):
client = Client.query.filter_by(tele=session.get('client_phone') ,name=session.get('client_logged_in'), family=session.get('client_family')).first_or_404()
worker = Worker.query.filter_by(id=worker_id).first_or_404()
if client.is_subscriber(worker.id):
client.unsubscribe(worker.id)
client.in_chat = False
db.session.add(client)
db.session.commit()
socketio.emit('hide_calendar', namespace='/notifications-{}-{}'.format(client.name, client.family)
)
return jsonify({'success': Thanks for subscription.'})
@client\u route.route('/client/cat-/subscribe/',方法=['POST']
@唯一的客户
@是否为活动客户端
def订阅工作人员(工作人员id):
client=client.query.filter\u by(tele=session.get('client\u phone')、name=session.get('client\u logged\u in')、family=session.get('client\u family'))。首先
worker=worker.query.filter\u by(id=worker\u id)。first\u或\u 404()
如果不是client.is_订户(worker.id):
client.subscribe(worker.id)
client.in_chat=True
db.session.add(客户端)
db.session.commit()
emit('show_calendar',namespace='/notifications-{}-{}'。格式(client.name,client.family)
)
返回jsonify({'success':感谢订阅。})
@client_route.route('/client/cat-/subscribe/',methods=['POST'])
@唯一的客户
@是否为活动客户端
def取消订阅工作人员(工作人员id):
client=client.query.filter\u by(tele=session.get('client\u phone')、name=session.get('client\u logged\u in')、family=session.get('client\u family'))。首先
worker=worker.query.filter\u by(id=worker\u id)。first\u或\u 404()
如果client.is_订户(worker.id):
客户端.取消订阅(worker.id)
client.in_chat=False
db.session.add(客户端)
db.session.commit()
emit('hide_calendar',namespace='/notifications-{}-{}'。格式(client.name,client.family)
)
返回jsonify({'success':感谢订阅。})
现在在我的模板中,我已经初始化了socketio,下面是代码:
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.1/socket.io.js"></script>
<script type="text/javascript">
var socket = io.connect('http://' + document.domain + ':' + location.port + '/notifications-{{session.get("client_logged_in")}}-{{session.get("client_family")}}');
socket.on('show_calendar', function(){
alert('Now you can make a book .');
$('#show_calendar').html('<div id="calendar"></div>');
});
socket.on('hide_calendar', function(){
console.log('Calendar will be disabled .');
$('#show_calendar').html('\
<div class="alert alert-warning alert-dismissible alert-disappear" role="alert">\
You have to subscribe to make a book .\
</div>\
');
});
</script>
var socket=io.connect('http://'+document.domain+':'+location.port+'/notifications-{{session.get(“client_logged_in”)}}-{{session.get(“client_family”)});
socket.on('show_calendar',function(){
警惕(‘现在你可以做一本书了’);
$('show#u calendar').html('';
});
socket.on('hide_calendar',function(){
console.log('日历将被禁用');
$('show#u calendar').html('\
\
你必须订阅一本书\
\
');
});
日历块的最后一件事是:
<div id="schedule" class="column_left wrap">
<div class="header_block">
<span>Calendar</span>
</div>
<div id="show_calendar">
{% if client.is_subscriber(worker.id) %}
<div id="calendar"></div>
{% else %}
<div class="alert alert-warning alert-dismissible alert-disappear" role="alert">
You have to subscribe to make a book .
</div>
{% endif %}
</div>
</div>
历法
{%if client.is_subscriber(worker.id)%}
{%else%}
你必须订阅一本书。
{%endif%}
现在的问题是,如果我订阅了,我可以在DOM中看到写着你必须订阅一本书的文本被删除,并且日历div被放置,但日历没有打开,我只看到一个空白,在重新加载页面后,它会出现,我不会这样做,我希望在订阅后立即显示日历 请任何帮助将不胜感激 更新
我认为应该有一种方法来加载另一个jquery代码,该代码启动并运行
fullcalendar
,其中包含其他用户所做的所有事件和约会 语言注释:“你必须订阅一本书”应该正确地为“你必须订阅一本书”。否则它就不是正确的英语。(是的,但它的意思是错误的,暗示用户将创建一些阅读材料!)“日历没有打开,我看到的只是一个空白。”。实际创建完整日历的代码在哪里?e、 g.$(“#calendar”).fullCalendar({/..etc
?只显示一个名为“calendar”的div不是在创建日历对象。这似乎是一个客户端问题。为什么要用所有服务器端标记对其进行标记?我建议您查看JavaScript控制台中的错误,这可能会让您对问题有所了解。@ADyson,感谢您的语言注释:),现在它工作正常,但我有一个问题,如果我单击“取消订阅”,会话仍会将用户保存为订户,直到您刷新页面,有没有办法让他在我单击“取消订阅”时取消订阅,而无需重新加载页面?哦@Miguel,感谢您的兴趣,先生,我是您的粉丝之一,非常感谢您的支持请大家努力:)。