当前位置:首页 > 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):

<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 开发服务器:

npm run serve

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

安全性增强

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

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

常见问题解决

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

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

django vue实现登录

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

标签: djangovue
分享给朋友:

相关文章

vue实现拖动

vue实现拖动

Vue实现拖动的常用方法 在Vue中实现拖动功能通常需要结合HTML5的拖放API或第三方库。以下是几种常见实现方式: 使用HTML5原生拖放API HTML5提供了原生拖放API,可以通过drag…

vue实现尺子

vue实现尺子

Vue 实现尺子组件 实现一个尺子组件可以通过 Canvas 或纯 CSS 完成。以下是两种常见实现方式: 使用 Canvas 绘制尺子 通过 Canvas 动态绘制刻度线和数字,适合需要高精度或动…

mui实现vue

mui实现vue

mui 实现 Vue 的步骤 mui 是一个轻量级的前端框架,常用于移动端开发。结合 Vue 可以实现高效的开发体验。以下是具体实现方法。 安装 mui 和 Vue 通过 npm 或 yarn 安装…

vue下载实现

vue下载实现

Vue 下载实现方法 在 Vue 项目中实现文件下载功能可以通过多种方式完成,以下是几种常见的方法: 使用 <a> 标签实现下载 通过动态创建 <a> 标签并设置 href…

vue实现图片预览

vue实现图片预览

Vue 实现图片预览的方法 使用 Element UI 的 el-image 组件 Element UI 提供了 el-image 组件,支持图片预览功能。通过设置 preview-src-list…

vue实现购物平台

vue实现购物平台

实现购物平台的基本架构 使用Vue.js构建购物平台需要结合前端框架、状态管理、路由和后端接口。以下是一个基本实现方案: 项目初始化与依赖安装 通过Vue CLI创建项目并安装必要依赖: vue…