从Django视图传递数据以作出反应

时间:2017-05-12 01:28:49

标签: django reactjs

我有一个django视图,它返回一个变量以便在模板中呈现

return render_to_response('index.html', {
    'courses': courses})

我使用ReactJS呈现index.html文件,但我不确定是否必须在我的视图或ReactJS文件中指向index.html。
如果我必须指向index.html,我如何在React中使用courses变量?

更新 我传递的变量课程是dictionnary类型

1 个答案:

答案 0 :(得分:1)

模板处理在任何类型的JavaScript解释之前。这意味着在某种意义上,您必须模仿js标记之间的硬编码。

首先,要知道在客户端收到python字典时可能会损坏它。为防止这种情况,您可能希望将其作为json对象发送。这意味着,在脚本views.py中,您必须json.dumps您的字典。如下

from django.shortcuts import render
import json
#...
    #...
    return render(request,
                 'your_app/index.html',\
                  {'courses': json.dumps(courses)}\
                  )

请注意,我使用render代替render_to_response,因为render is a brand spanking new shortcut for render_to_response in 1.3 that will automatically use RequestContext

另外,请注意,您必须指向index.html,但具体路径取决于项目的结构。上面,我假设你遵循推荐的django项目布局,即

myproject/
    manage.py
    your_project/
        __init__.py
        urls.py
        wsgi.py
        settings/
            __init__.py
            base.py
            dev.py
            prod.py
    your_app/
        __init__.py
        models.py
        managers.py
        views.py
        urls.py
        templates/
            your_app/
                index.html
    [...]

然后,在html方面,

...
<script>
 var courses = {{courses|safe}}
// working with the variable courses
</script>
...

现在,您可以使用ReactJS库来执行您想要的操作。