use*_*014 4 django rest reactjs
我正在尝试使用Django作为后端和React作为前端来设置项目.该项目有几个屏幕,DB中的大量信息和后端生成的图像,并将包括一些身份验证和不同屏幕的用户权限.
根据我发现 - 最好的方法是让Django渲染一个html文件:
def index(request):
return render(request, 'frontend/index.html')
Run Code Online (Sandbox Code Playgroud)
它引用了一个.js文件:
<script src="{% static "frontend/main.js" %}"></script>
Run Code Online (Sandbox Code Playgroud)
这是使用Webpack创建的.
这个main.js使用REST api从Django中检索所需的数据:
fetch("...some Django endpoint..").then(response => ... this.setState(...retrieved data...))
Run Code Online (Sandbox Code Playgroud)
与仅使用Django for backend + Django模板的前端不同,后端可以直接将上下文发送到模板:
def index(request):
context = {'information': .... retrieve info from DB}
return HttpResponse(loader.get_template('bla/index.html').render(context, request))
Run Code Online (Sandbox Code Playgroud)
模板可以直接使用此信息,而无需再次引用后端:
{% for bla in information %}
Run Code Online (Sandbox Code Playgroud)
我想知道这是否合理?
让前端使用REST来检索它需要的每条信息并且后端为它需要提供的每个数据部分暴露另一个REST api似乎过分(而不是仅仅将所有信息推送到单个dict并将其发送到以及模板),
此外,它需要至少2个RTT来呈现整页(我猜通常是可以的)
rud*_*dra 12
根据我发现 - 最好的方法是让Django渲染一个html文件:
我不同意这一行.我想说最好保持react应用程序和Django应用程序完全分开.我相信,Django应用程序应该只提供API和管理站点(可能,根据您的需要).前端应该是一个独立的应用程序,可以通过NGINX/ExpressJs/Apache等提供服务.
这种设置有几个优点.
从Django应用程序的角度来看,优点是:
从后端释放前端应用程序是前端可能发生的最好的事情.例如:
有一个很棒的教程,你可以在媒体上阅读有关设置单独的Django + ReactJs应用程序.
| 归档时间: |
|
| 查看次数: |
1428 次 |
| 最近记录: |