使用django框架写一个前后端分离的web项目演示
时间: 2024-06-09 12:08:47 浏览: 17
好的,下面我介绍一下如何使用 Django 实现前后端分离的 web 项目。
首先,我们需要明确前后端分离的概念。传统的 web 项目一般是将前端和后端代码写在一起,前端负责展示数据和与用户进行交互,后端负责处理业务逻辑和数据操作。而前后端分离则是将前端和后端分开,前端只负责展示数据和与用户进行交互,后端只负责处理业务逻辑和数据操作,两者通过 API 进行交互。
下面是一个简单的使用 Django 实现前后端分离的 web 项目演示:
1. 创建 Django 项目
首先需要安装 Django,在命令行中输入以下命令:
```
pip install Django
```
然后创建 Django 项目,输入以下命令:
```
django-admin startproject myproject
```
2. 创建 Django 应用
在 Django 项目中,应用是指实现具体功能的模块。在命令行中输入以下命令创建一个应用:
```
python manage.py startapp myapp
```
3. 配置 Django 应用
在 myapp 目录下创建 views.py 文件,编写一个简单的视图函数:
```python
from django.http import JsonResponse
def hello(request):
return JsonResponse({'message': 'Hello World!'})
```
在 myproject 目录下的 settings.py 文件中注册应用:
```python
INSTALLED_APPS = [
# ...
'myapp',
]
```
在 myproject 目录下的 urls.py 文件中添加路由:
```python
from django.urls import path
from myapp.views import hello
urlpatterns = [
path('hello/', hello),
]
```
4. 创建前端代码
在 myproject 目录下创建 templates 文件夹,然后在其中创建 index.html 文件:
```html
<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1 id="message"></h1>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script>
axios.get('/api/hello/')
.then(response => {
document.getElementById('message').innerText = response.data.message;
})
.catch(error => {
console.error(error);
});
</script>
</body>
</html>
```
在上面的代码中,我们使用了 axios 库发送请求,获取后端返回的数据,并将其展示在页面上。
5. 配置前端代码
在 myproject 目录下的 settings.py 文件中添加以下配置:
```python
TEMPLATES = [
{
# ...
'APP_DIRS': True,
'DIRS': [
BASE_DIR / 'templates',
],
# ...
},
]
STATICFILES_DIRS = [
BASE_DIR / 'static',
]
STATIC_URL = '/static/'
```
在 myproject 目录下的 urls.py 文件中添加路由:
```python
from django.urls import path
from django.views.generic import TemplateView
urlpatterns = [
path('', TemplateView.as_view(template_name='index.html')),
]
```
6. 运行 Django 项目
在命令行中输入以下命令启动 Django 项目:
```
python manage.py runserver
```
然后在浏览器中访问 http://localhost:8000/ ,即可看到页面上展示了 "Hello World" 字符串。
这就是一个简单的使用 Django 实现前后端分离的 web 项目。其中,后端代码主要负责处理业务逻辑和数据操作,前端代码主要负责展示数据和与用户进行交互,两者通过 API 进行交互,实现了前后端分离的架构。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)