2017-04-17 11 views
2

クライアントがカレンダーで予定を作成できる小さなアプリケーションを作っていますが、データベース内に予定を保存して日付までに表示する方法がわかりません。アポイントをデータベースFlaskに保存する方法は?

全編集:私は、データベース内の予定を保存したい

Click to see a full image.

、その際:

私はあなたが以下を参照できるよう、いくつかのジャンク予定でカレンダーを作成しました任意のクライアントがそれを送信した後にヒットすると、Ajaxリクエストがリクエストを処理できる私のビューに送信されます。ここではです。

@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私は、リストからデータを簡単に取得できるように辞書をリストに変換しているので、上で見たようにキーと値がありますタイトル asfawgというタイトルの値を取得する必要がありますが、私は何も得られず、リクエストはいつも返信データなし。およびの長さは、を返します。

私が作った間違いがどこにあるか教えてください。

+1

私は、あなたが何を求めているのか、このコードの大部分がそれと関係しているのか分かりません。 [ask]と[mcve]をお読みください。 – davidism

+0

答えを得ようとしているのは、カレンダーに配置された予定を保存し、カレンダーにも1つずつ表示する方法を知りたいということです。 – reznov11

+1

はい、何が問題なのですか?これは広すぎます。もう一度、私が上でコメントしたリンクを見てください。 – davidism

答えて

1

私はこの問題を解決しましたが、eventData自体は辞書ではなく、リストでした。私はその後、私のview.pyにそれを送信するために、AJAXリクエスト内で例えば開始日を取得したい場合は

だから、私はのようなものだろう:

data: { 
    'data': title, 
    'start': eventData['start']['_d'], 
    'end': eventData['end']['_d'] 
} 

をそして私は少し変更しました私は、JSONの引数を取り機能を追加し、JSON辞書としてそれを返す、私の見解をビット、私は仕事をする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] 

次は非常に簡単です、単に引数を取得しますオンで1つ次の順序のようになります。

data = parse_arg_from_requests('data') 
start = parse_arg_from_requests('start') 
end = parse_arg_from_requests('end') 
return render_template('panel/panel.html') 
+0

githubやいくつかのリポジトリに完全な例がありますか? – geo

関連する問題