使用 Django 进行前后端分离时,前端可以不用框架吗?

如果不用框架前端要怎么渲染,求大神告知
使用 Django 进行前后端分离时,前端可以不用框架吗?

16 回复

后端只提供 API


当然可以。Django做前后端分离时,前端完全可以用原生HTML/CSS/JS,不一定非得用Vue/React这些框架。

核心就是:Django后端只提供API(通常用Django REST framework),返回JSON数据。前端用一个独立的静态服务器(比如Nginx)来托管你的HTML、CSS、JS文件。前端代码里用fetchaxios去调用Django的API接口,拿到数据后再用JS动态更新页面。

给你个最简单的例子:

1. Django后端 (api/views.py):

from rest_framework.decorators import api_view
from rest_framework.response import Response

@api_view(['GET'])
def get_message(request):
    data = {"message": "Hello from Django API!"}
    return Response(data)

2. 纯HTML/JS前端 (index.html):

<!DOCTYPE html>
<html>
<head>
    <title>纯前端调用Django API</title>
</head>
<body>
    <div id="content">等待加载数据...</div>
    
    <script>
        // 直接调用Django的API端点
        fetch('http://your-django-domain/api/message/')
            .then(response => response.json())
            .then(data => {
                document.getElementById('content').innerHTML = data.message;
            })
            .catch(error => {
                console.error('Error:', error);
            });
    </script>
</body>
</html>

关键点:

  • 前端HTML文件单独部署,不和Django模板混在一起
  • Django配置好CORS(跨域资源共享),让前端能跨域访问API
  • 前端用JavaScript的Fetch API或XMLHttpRequest发请求

什么时候该用框架?

  • 应用复杂,有大量动态交互和状态管理
  • 需要组件化开发、路由管理
  • 团队协作和项目可维护性要求高

什么时候用纯前端就行?

  • 项目简单,主要是展示内容
  • 只需要少量AJAX交互
  • 想保持技术栈轻量,减少学习成本

简单说就是:小项目或原型用原生JS够用,复杂应用再考虑框架。

那前端页面要独立出来写么,还是要放到 Django 的 templates 里面

jquery ajax 请求 然后渲染呗 以前不都这么写的吗?

后端只提供数据接口,不渲染网页,前端 ajax 请求数据接口,把数据放到网页中去,可以原生 js 操作 DOM,也可以使用一些库和框架来简化 DOM 操作。简单的 Jquery,数据驱动的一些库和框架,vue,react,angular 等。看业务复杂程度选择上不上框架。

前端独立写

跟你现有的后端没有任何关系
比如你用 Vue 做的前端,打包的文件可以在服务器再建一个站点绑定业务域名
这样默认是跨域的,需要你的服务端配置一下跨域参数
如果做同源,那就把打包文件放在 Django 同个站点下面,公开的共目录或者子目录

前后端都分离了 还放到你 templates 那还分离个 j8 毛?

前端静态文件的位置就无所谓放哪儿了,都是 ajax 向 API 拿数据啊

django-rest-framework

用框架其实更方便开发 我自己最近就在把一个 flask 的模板改成 vue 的页面 实现前后端分离

6 楼正解

想问一下前后端分离是怎么保证 api 安全性的啊?


csrf token 了解一下

api 的安全性跟前后端分离没有必然的联系,API 自己要做好权限认证(甚至包括用户访问频度控制等),前端在 API 允许的范围内可以随便乱搞。

如果前端不用框架的话,怎么部署呢?比如用 nginx 的话

回到顶部