2017-07-06 14 views
1

私はdjango、python、javascriptを使用してウェブサイトを作っています。 私はエラー
'が見つかりません:/スケジュール/ {%のurl 'を取得私は、JSファイルにAJAXを使用Django、Ajax urlがjsファイルに見つかりません

fullcalendar.js

function eventElementHandlers(event, eventElement) { 
    eventElement 
     .click(function(ev) { 
      var start = event.start; 
      var id = event.id; 
      var title = event.title; 

      var allData = {'csrfmiddlewaretoken': '{{ csrf_token }}', "id":id, "start":start, "title":title}; 
      $.ajax({ 
       url: "{% url 'schedule_delete' %}", 
       type: "POST", 
       data: allData, 
       dataType: "json", 

       success: function(response){ 
        alert("success!"); 
        $('#used_session'+id).html(response.used_session); 

       }, 
       error:function(error){ 
        alert("fail!"); 
       } 
      }); 
    } 

urls.py schedule_delete' %を}'

from django.conf.urls import url 
from . import views 

urlpatterns= [ 
url(r'^$', views.home, name='home'), 
url(r'^schedule_delete/$', views.schedule_delete, name='schedule_delete'), 

] 

私はviews.pyでもschedule_deleteを作成しました。

なぜURLが間違っていますか?他のテンプレートでも同じURL形式でOKです。 URLのforamtは、djangoのテンプレートやjsファイルによって異なりますか?

お手数をおかけしますが、ありがとうございます。

+0

このURLのようなjsファイルにURLを保つ: "/ schedule_delete"、 – Exprator

+0

1.それは/追加されますあなたの現在のURLにschedule_delete/ 2.使用したい場合:use:url: "{%url 'app_name:schedule_delete'%}"、 –

答えて

0

あなたはdjangoを使ってhtmlファイルをレンダリングするだけなので、javascriptファイルはdjangoコンテキストにアクセスできません。あなたがする必要があるのは、{%url%}テンプレートタグにアクセスできるように、テンプレートにJavaScriptをインラインで置くことです。

別の方法として、例えばurlに設定したdata-url html属性を作成し、javascriptファイルのその属性にアクセスすることができます。

編集:

は、私はあなたのHTMLがどのように見えるかわからないが、私はあなたのeventElementがボタンであると仮定します。あなたがボタンをクリックすると、あなたのイベントハンドラは、あなたのjsファイルで呼び出され

<button data-url="{% url 'schedule-delete' %}"></button> 

function eventElementHandlers(event, eventElement) { 
    eventElement 
     .click(function(ev) { 

      ... 

      $.ajax({ 
       url: $(eventElement).data('url'), 
       ... 
+0

私は理解しており、それは私が説明しようとしているものです。カスタムhtml属性をeventElementに追加してdjango URLに設定し、javascriptファイルの値としてjQueryを通じてこの属性をクエリできます – dentemm

2

あなたのjsファイルに"{% url 'schedule_delete' %}"を使用することはできません。まず、このURLをHTMLフォームの入力に入れてから、javascriptまたはjqueryを使用して読み込む必要があります。

htmlで記述します。

<button ... id="ajax-button" data-ajax-target="{% url 'named-url' %}"> 

とJavaScriptでは、単に

$.post($("#ajax-button").attr("data-ajax-target"), ...); 

を行うこれは、あなたが他の方法でも同様の行うことができますあくまでも一例です。

+0

あなたの答えをありがとう。しかし、私はfullcalendarテンプレートを使用しています。したがって、eventelementイベントをクリックすると、fullcalendar.js内でのみ発生します。私はhtmlで同じことを(イベントをクリックして)しようとしましたが、失敗しました。 jsファイルでajaxを処理する方法はありますか? – Julia

+0

クリックしているボタン(_data-url = "{%url 'named-url'%}" _)に、データURL属性を追加できます。 – dentemm

+0

どのようにhtmlのeventElementHandlers(event、eventElement){}関数に移動しますか?私は私のdivにhrefを入れます。 jsにアクセスするには、どのようなhref形式が必要ですか? – Julia

0

あなたはURL /schedule/schedule_delete/にリクエストしていますが、あなたのurls.pyはURL /schedule_delete/を処理するためだけにセットアップされているようです。メインのurls.pyからスケジュールurls.pyを含めていますか?

また、他の回答者も、javascriptファイルでdjangoテンプレート変数を使用することはできません。

関連する問題