2016-08-13 8 views
0

djangoのレンダリング引数をサーバーレスポンスとして渡し、反応コンポーネントを使用してフェッチし、htmlに送信する際に問題があります。以下は反応jsコンポーネントのdjangoレンダリング引数を取得する

Djangoのコードです:後

def view_personal_details (request): 
    personal_detail_json = personal_details.objects.all() 
    personal_detail = serializers.serialize('json', personal_detail_json) 
    return render (request, "webFiles/reactOutput.html", {'personal_detail': personal_detail}) 

は、Djangoの応答を経由して送信された 'personal_detail' を取得するために、反応するコードです:以下

var categories = []; //{ "model": "buglockerApp.authentication_details", "pk": 1, "fields": { "userid": "001", "password": "[email protected]", "sec_que": "Pet Name", "sec_ans": "Jerry" } }]; 

var App = _react2.default.createClass({ 
    displayName: 'App', 

    getInitialState: function getInitialState() { 
     return { 
      data: null 
     }; 
    }, 
    componentDidMount: function componentDidMount() { 
     var self = this; 
     //var http = require("http"); 
    var REQUEST_URL = "/viewPersonalDetails"; 
    // var request = http.get(REQUEST_URL, function (response) { 
    // console.log ("react response" + JSON.stringify(response)); 
    // var buffer = "", 
    //   data; 
    //  console.log("categories :" + JSON.stringify(categories)); 
    // response.on("data", function (chunk) { 
    //   buffer += chunk; 
    // }); 

    // response.on("end", function (err) { 
     //  self.setState({ 
     //   categories: buffer 
     //  }); 
     //  console.log('buffer: ' + buffer); 
    //  console.log('categories: ' + JSON.stringify(categories)); 
    // }); 
    // }); 

    fetch(REQUEST_URL, { 
      method: 'get', 
      dataType: 'json', 
      headers: { 
      'Accept': 'application/json', 
      'Content-Type': 'application/json' 
      } 
     }) 
     .then((response) => 
      { 
      return response.json() // << This is the problem 
      }) 
     .then((responseData) => { // responseData = undefined 

      return responseData; 
     }) 
     .then((data) => { 

      console.log(data); 
     }); 
    }, 
    render: function render() { 
     return _react2.default.createElement(
      'div', 
      null, 
      _react2.default.createElement(_griddleReact2.default, { results: categories, tableClassName: 'table', showFilter: true, showSettings: true, columns: [] }) 
     ); 
    } 
}); 

_reactDom2.default.render(_react2.default.createElement(App, null), document.getElementById('app')); 

はHTMLです反応コンポーネントが出力を出力するコンテンツ:

<!DOCTYPE html> 
<html lang = "en"> 
    <head> 
     <meta charset = "UTF-8"> 
     <title>React First App</title> 
     {% load static %} 
    </head> 
    <body> 
     Django Direct Output: <br /> 
     {{ personal_detail }} 
     ------------------------ <br /> 
     React Output: <br /> 
     <div id = "app"></div> 
     <script src = "{% static 'js/reactResponseNoDefaultJson.js' %}"></script> 
    </body> 
</html> 

部分(上記のHTMLコンテンツ)は、Djangoから正しいjson値を直接返しますが、html(つまり、アプリdivと下のjavascript)が反応のコンテンツを返さないreactResponseNoDefaultJson.js 'は縮小された反応jsです。

+0

絶対に応答はありませんか?マークアップがあるはずです。コンソールログには何も印刷されませんか?私は反応の専門家ではないので、そのコードについてはあまり言い表せませんが、あなたの 'componentDidMount()'に何か間違っていると思います。 –

+0

私は多くの反応知識を持っていません。それはyです。私はこの問題に直面しています。 –

+0

確かに応答があります。しかし、「反応でそれを取り出す方法は?」 ... –

答えて

0

まあ、私はJSの英雄ではないが、私はあなたが解決するためにJSONレスポンスを返すために、Djangoのビューが必要だと思う:

「// < <これが問題である」ライン

ためdocumentationをチェックjsonレスポンスオブジェクト。

関連する問題