无法通过Django + ReactJS框架获取数据

时间:2018-02-24 23:14:21

标签: django reactjs django-rest-framework

我正在学习Django + ReactJS,我在从Django模型中获取数据时遇到了麻烦。

我正在本教程中逐步完成:http://geezhawk.github.io/using-react-with-django-rest-framework

然而,当我在firefox中检查控制台时,我收到“请求失败,状态码为500”消息。 Django + React集成工作正常,但由于某种原因它不会获取数据。有什么想法吗?

网站中的代码如下:

型号:

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=200, unique=True)
    author = models.CharField(max_length=100)

串行:

from rest_framework import serializers
from .models import Book

class BookSerializer(serializers.ModelSerializer):

    class Meta:
        model = Book
        fields = ('title', 'author')

views.py

from rest_framework import generics
from .models import Book
from .serializers import BookSerializer

class BookList(generics.ListCreateAPIView):

    queryset = Book.objects.all()
    serializer_class = BookSerializer

的index.html

{% load render_bundle from webpack_loader %}
<!DOCTYPE html>
<html>
    <head>
        <title>Hello React</title>
    </head>
    <body>
        <div id="container"></div>
        {% render_bundle 'main' %}
    </body>
</html>

index.js

var React = require('react')
var ReactDOM = require('react-dom')

var BooksList = React.createClass({
    loadBooksFromServer: function(){
        axios.get(this.props.url)
        .then(function (data) {
            this.setState({data: data});
            }.bind(this)
        )
        .catch(function (error) {
            console.log(error);
        });
    },

    getInitialState: function() {
        return {data: []};
    },

    componentDidMount: function() {
        this.loadBooksFromServer();
        setInterval(this.loadBooksFromServer, 
                    this.props.pollInterval)
    }, 
    render: function() {
        if (this.state.data) {
            console.log('DATA!')
            var bookNodes = this.state.data.map(function(book){
                return <li> {book.title} </li>
            })
        }
        return (
            <div>
                <h1>Hello React!</h1>
                <ul>
                    {bookNodes}
                </ul>
            </div>
        )
    }
})

ReactDOM.render(<BooksList url='/api/' pollInterval={1000} />, 
    document.getElementById('container'))

1 个答案:

答案 0 :(得分:-1)

@somethingstrag我建议您在实际使用之前在邮递员中测试您的API。你能告诉我你如何注册网址的信息吗?

this.props.url

请发布您收到的错误。错误代码500表示内部服务器错误。