在django的drf项目中调用某一个python脚本的完整写法,前端用vue
时间: 2024-02-19 10:04:10 浏览: 163
在 Django REST framework 项目中调用 Python 脚本,并使用 Vue.js 作为前端框架的完整写法如下:
1. 在 Django REST framework 项目的根目录下创建一个 Python 脚本(比如叫做 `myscript.py`),并编写你需要的代码。
2. 在 Django REST framework 项目的设置文件 `settings.py` 中,设置跨域资源共享(CORS)中间件,以允许前端应用程序访问后端 API。
```python
INSTALLED_APPS = [
# ...
'corsheaders',
# ...
]
MIDDLEWARE = [
# ...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
# ...
]
CORS_ORIGIN_ALLOW_ALL = True
```
3. 在 DRF 视图函数中,使用 Python 标准库中的 `subprocess` 模块来启动该脚本。
```python
import subprocess
from rest_framework.views import APIView
from rest_framework.response import Response
from django.conf import settings
class MyView(APIView):
def get(self, request):
# 启动脚本并等待其执行完成
subprocess.run(['python', '{}/myscript.py'.format(settings.BASE_DIR)], check=True)
return Response({'message': 'Done'})
```
4. 在 Vue.js 应用程序中,使用 `axios` 库向后端 API 发送请求。
```javascript
const BASE_URL = 'http://localhost:8000/api';
export default {
methods: {
callScript() {
axios.get(`${BASE_URL}/my-view/`)
.then(response => console.log(response.data))
.catch(error => console.error(error));
}
}
}
```
在这个例子中,我们定义了一个名为 `callScript()` 的方法,在该方法中使用 `axios.get()` 函数向后端 API 发送 GET 请求,以调用 `MyView` 视图函数。在请求成功时,我们将响应数据打印到控制台上;在请求失败时,我们将错误信息打印到控制台上。
需要注意的是,为了使前端应用程序能够访问后端 API,我们需要在后端 API 中设置 CORS 中间件,并在前端应用程序中使用与后端 API 相同的域名和端口号。如果你的前端应用程序与后端 API 不在同一域名或端口下,你需要在后端 API 中进行额外的设置。
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)