当前位置:首页 > VUE

django vue实现登录

2026-02-20 08:18:12VUE

Django 与 Vue 实现登录功能

后端 Django 配置

创建 Django 项目并安装必要依赖:

pip install django djangorestframework django-cors-headers

配置 settings.py

INSTALLED_APPS = [
    ...
    'rest_framework',
    'corsheaders',
]

MIDDLEWARE = [
    ...
    'corsheaders.middleware.CorsMiddleware',
]

CORS_ORIGIN_ALLOW_ALL = True  # 开发时允许所有跨域请求

创建用户认证视图(views.py):

from rest_framework.views import APIView
from rest_framework.response import Response
from django.contrib.auth import authenticate, login

class LoginView(APIView):
    def post(self, request):
        username = request.data.get('username')
        password = request.data.get('password')
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return Response({'status': 'success'})
        return Response({'status': 'error'}, status=400)

配置路由(urls.py):

from django.urls import path
from .views import LoginView

urlpatterns = [
    path('api/login/', LoginView.as_view()),
]

前端 Vue 实现

安装 Vue 和相关依赖:

npm install vue axios vue-router

创建登录组件(Login.vue):

django vue实现登录

<template>
  <div>
    <input v-model="username" placeholder="Username">
    <input v-model="password" type="password" placeholder="Password">
    <button @click="handleLogin">Login</button>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      username: '',
      password: ''
    }
  },
  methods: {
    handleLogin() {
      axios.post('http://localhost:8000/api/login/', {
        username: this.username,
        password: this.password
      }).then(response => {
        if (response.data.status === 'success') {
          this.$router.push('/dashboard')
        }
      })
    }
  }
}
</script>

配置路由(router.js):

import Vue from 'vue'
import Router from 'vue-router'
import Login from './components/Login'

Vue.use(Router)

export default new Router({
  routes: [
    { path: '/login', component: Login }
  ]
})

前后端联调

启动 Django 开发服务器:

python manage.py runserver

启动 Vue 开发服务器:

django vue实现登录

npm run serve

确保 Django 的 CORS_ORIGIN_ALLOW_ALL 设置为 True,以便 Vue 应用可以访问 Django 后端接口。

安全性增强

生产环境中应添加以下安全措施:

  • 使用 HTTPS
  • 配置更严格的 CORS 策略
  • 添加 CSRF 保护
  • 实现 JWT 认证替代 session

常见问题解决

跨域问题:确保 django-cors-headers 已正确安装和配置。

认证失败:检查 Django 用户模型中是否存在对应的用户,并确认密码正确。

路由问题:确保 Vue 路由和 Django URL 配置没有冲突。

标签: djangovue
分享给朋友:

相关文章

vue实现slidetoggle

vue实现slidetoggle

Vue 实现 SlideToggle 效果 SlideToggle 是一种常见的交互效果,元素以滑动方式展开或收起。以下是几种实现方法: 使用 CSS Transition 和 v-show 通过…

vue实现表单

vue实现表单

Vue 表单实现方法 双向数据绑定 使用 v-model 指令实现表单元素与数据的双向绑定。适用于 input、textarea、select 等元素。 <template> <…

vue实现横滚

vue实现横滚

Vue 实现横滚效果 横滚效果通常指水平滚动内容,常见于轮播图、横向导航栏等场景。以下是几种实现方式: 使用 CSS 和 Vue 结合 通过 CSS 的 overflow-x 和 white-spa…

vue实现uuid

vue实现uuid

使用 uuid 库生成 UUID 在 Vue 项目中,可以使用 uuid 库来生成 UUID。安装依赖: npm install uuid 在 Vue 组件中使用: import { v4 as…

vue实现折叠

vue实现折叠

Vue 实现折叠功能 在 Vue 中实现折叠功能可以通过多种方式完成,以下介绍几种常见的方法。 使用 v-show 或 v-if 控制显示隐藏 通过 Vue 的指令 v-show 或 v-if 可以…

vue指令实现

vue指令实现

Vue 指令的实现方式 Vue 指令是特殊的标记,用于在 DOM 元素上应用特定的行为。可以通过全局或局部方式注册自定义指令。 全局注册指令 在 Vue 应用中通过 Vue.directive 方法…