【发布时间】:2021-06-15 16:30:10
【问题描述】:
我启动了一个 Django 应用程序并使用 Django-Allauth 创建了整个身份验证层,它已经具有一些功能,例如电子邮件确认、密码重置和两因素身份验证。现在我意识到,由于我的应用程序将是高度交互的并且具有许多实时功能,我将需要一个 Vue SPA 来与 Django 一起使用,所以我正在考虑在同一台服务器上创建 Vue SPA 并且域并将 Django 作为 Rest API。
这是我的问题:因为我已经使用 Django 模板和 Django url 完成了整个身份验证部分,如果我将前端的其余部分与后端分开,我是否必须重写所有内容?是否可以在同一个域上分离 Vue 应用程序和 Django 后端应用程序,其中身份验证由 Django 模板处理,其余的都是具有 vue 路由的 Vue 应用程序,所有其他交互都由 Django Rest Framework 端点处理?
所以可能是这样的:
urlpatterns = [
path('accounts/signup/', SignUpView.as_view(), name='signup'), #Django template
path('accounts/login/', LoginView.as_view(), name='login'), #Django template
...
]
这些是由 Django 视图呈现页面的唯一 Django 处理的 url。用户登录后,他们将被重定向到 VueJS 应用程序。
【问题讨论】:
-
这不是不可能的,但尤其是如果您希望您的 SPA 动态更改浏览器的地址(推送历史 API),那么您将需要大量非常详细的 URL 配置来使服务器正确地服务文件。至少您应该为某些部分保留某些前缀,例如
/api/用于所有 API 调用,/app/用于您的 SPA。 -
您使用的 HTTP 服务器是什么?如果是 nginx,可以查看docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy
-
我正在使用 Ningx,是的!我正在考虑做类似
/account/<django-auth-url>的事情,其中所有内容都由Django 视图呈现,然后是/app/<Vue-routes>,这是一个SPA,最后是从Django/api/<drf-view>提供JSON 数据,当然,所有这些都在同一台服务器上。我觉得这比使用 Vue 和 DRF 从零开始构建我自己的身份验证要容易和安全得多,而且我对 Django 的经验比 Javascript 更丰富 -
默认情况下,你不能在 vue 项目中使用你用 Django 构建的 Auth 和路由,特别是,如果你不想,你可以将 Django 项目中的每个视图渲染为 Vue 组件将与用户交互(但它是独立的..我的意思是它不能与其他页面交互,因为页面将在每次 url 更改时重新加载)
-
是的,我也想过这个问题,但我担心这会使代码更加混乱和混乱,因为我会大量使用 Vue;将其用作单独的 spa 或通过在 Django 中加载 webpack 更有意义
标签: javascript python django vue.js frontend