技术点:通过vue状态管理器,对已经登录的用户显示不同的页面:

一  vue之状态管理器应用

主要用来存储cookie信息
与vue-cookies一起使用
安装:npm install vue-cookies

1.1登录页面

<template>
<div class="login">
<h1>登录</h1> <p>用户名:<input type="text" v-model="name"></p>
<p>密码:<input type="password" v-model="pwd"></p> <button @click="login" class="btn bg-danger">登录</button>
</div>
</template> <script> export default {
data: function () {
return {
name:'',
pwd:''
} },
methods: {
login: function () {
let _this = this
this.$http.request({
url: _this.$url + 'login/',
method: 'post',
data:{'name':_this.name,'pwd':_this.pwd}
}).then(function (response) {
console.log(response.data)
alert(_this.$store.state.name)
if(response.data.status==100){
//往stort.js的state的字典中写入值
// _this.$store.state.name=_this.name
// _this.$store.state.token=response.data.token
//调用store下的某个方法,用commit,第一个参数是方法名,第二个参数是参数
_this.$store.commit('login',response)
}
alert(_this.$store.state.name) }).catch(function (response) {
console.log(response)
}) }, },
}
</script>
<style>
</style>

1.2在app中

如果登录,显示用户姓名与注销,否则为登录
<template>
<div id="app">
<div id="nav">
<router-link to="/">Home</router-link>
|
<router-link to="/about">About</router-link>
|
<router-link to="/course">Course</router-link>
|
<span class="pull-right">
<span v-if="!this.$store.state.name">
<router-link to="/login">登录</router-link>
<router-link to="/login">注册</router-link>
</span>
<span v-else>
<span>{{this.$store.state.name}}</span>
<a @click="logout">注销</a>
</span> </span> </div>
<router-view/>
</div>
</template>
<script> export default { methods: {
logout: function () {
this.$store.commit('logout') }, },
}
</script> <style>
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
} #nav {
padding: 30px;
} #nav a {
font-weight: bold;
color: #2c3e50;
} #nav a.router-link-exact-active {
color: #42b983;
}
</style>

1.3store中

import Vue from 'vue'
import Vuex from 'vuex'
import Cookie from 'vue-cookies'
Vue.use(Vuex) export default new Vuex.Store({
//存储全局变量
state: {
//不要写死,要从cookie中取
name: Cookie.get('name'),
token: Cookie.get('token') },
mutations: {
// 写方法,这里面写的所有方法,第一个参数,必须是state
login:function (state,response) {
//修改这两个变量的值
state.name=response.data.name
state.token=response.data.token
// 往cookie中写数据
Cookie.set('name',response.data.name)
Cookie.set('token',response.data.token) },
logout:function (state) {
//修改这两个变量的值
state.name=""
state.token=""
// 往cookie中写数据
Cookie.set('name',"")
Cookie.set('token',"")
} },
actions: {}
})

二  后台登录views

from rest_framework.views import APIView
from rest_framework.response import Response
from api import models
from api.MySer import CourseSerializer, CourseDetailSerializer, CourseCategorySerializer
from api.utils.commonUtils import MyResponse
import uuid class Login(APIView):
def post(self, request, *args, **kwargs):
response = MyResponse()
name = request.data.get('name')
pwd = request.data.get('pwd')
user = models.UserInfo.objects.filter(name=name, pwd=pwd).first()
if user:
# 得去UserToken表中存数据
# 生成一个随机字符串,不会重复
token = uuid.uuid4()
models.UserToken.objects.update_or_create(user=user, defaults={'token': token})
response.token = token
response.name=name
response.msg = '登录成功'
else:
response.msg = '用户名或密码错误'
response.status = '' return Response(response.get_dic)

vue状态管理器(用户登录简单应用)的更多相关文章

  1. vue - 状态管理器 Vuex

    状态管理 vuex是一个专门为vue.js设计的集中式状态管理架构.状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态.简单的说就是data中需要共用的属性.

  2. Vue状态管理模式---Vuex

    1. Vuex是做什么的? 官方解释: Vuex 是一个专为Vue.js 应用程序开发的 状态管理模式 它采用 集中式存储管理 应用的所有组件的状态, 并以相应的规则保证状态以一种可预测的方式发生变化 ...

  3. Vue状态管理vuex

    前面的话 由于多个状态分散的跨越在许多组件和交互间各个角落,大型应用复杂度也经常逐渐增长.为了解决这个问题,Vue提供了vuex.本文将详细介绍Vue状态管理vuex 引入 当访问数据对象时,一个 V ...

  4. VueX状态管理器 的应用

    VueX状态管理器 cnpm i vuex axios -S 1 创建Vuex 仓库 import Vue from 'vue' import Vuex from 'vuex' vue.use(Vue ...

  5. 对于React各种状态管理器的解读

    首先我们要先知道什么是状态管理器,这玩意是干啥的? 当我们在多个页面中使用到了相同的属性时就可以用到状态管理器,将这些状态存到外部的一个单独的文件中,不管在什么时候想使用都可以很方便的获取. reac ...

  6. 一文解析Pinia和Vuex,带你全面理解这两个Vue状态管理模式

    Pinia和Vuex一样都是是vue的全局状态管理器.其实Pinia就是Vuex5,只不过为了尊重原作者的贡献就沿用了这个看起来很甜的名字Pinia. 本文将通过Vue3的形式对两者的不同实现方式进行 ...

  7. vuex(vue状态管理)

    vuex(vue状态管理) 1.先安装vuex npm install vuex --save   2.在项目的src目录下创建store目录,并且新建index.js文件,然后创建vuex实例,引入 ...

  8. VueX(vue状态管理)简单小实例

    VueX:状态管理 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 核心模块:State. ...

  9. vue项目--vuex状态管理器

    本文取之官网和其他文章结合自己的理解用简单化的语言表达.用于自己的笔记记录,也希望能帮到其他小伙伴理解,学习更多的前端知识. Vuex 是什么? Vuex 是一个专为 Vue.js 应用程序开发的状态 ...

随机推荐

  1. Odoo 8.0 new API 概述

    相对于7来说,8的api改进了不少,用官方的话来说就是更加面向对象了. 下面探究一下具体的改动. 准备知识:python装饰器的使用 http://blog.csdn.net/thy38/articl ...

  2. am335x omap serial 驱动分析

    am335x 自身的 uart 驱动集成在 kernel 的 arch/arm/mach-omap2/ 里面. 文件是 arch/arm/mach-omap2/serial.c // 看到最底部 om ...

  3. fontDialog-字体对话框和colorDialog-颜色对话框

    private void button1_Click(object sender, EventArgs e) { DialogResult dr = fontDialog1.ShowDialog(); ...

  4. telnet 登陆的方法

    第一种方式:通过inetd启动telnetd服务 必须这样设置busybox配置    Networking Utilities --->        去掉 [ ]   Support sta ...

  5. shell中日期操作

    1. date -d操作 date +"%Y%m%d" -d "+n days" #今天的后n天日期 date +"%Y%m%d" -d & ...

  6. 构造 - HDU 5402 Travelling Salesman Problem

    Travelling Salesman Problem Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=5402 Mean: 现有一 ...

  7. Java8:使用 Optional 处理 null

    写过 Java 程序的同学,一般都遇到过 NullPointerException :) —— 为了不抛出这个异常,我们便会写如下的代码: User user = getUserById(id); i ...

  8. Gradle -- buildScript块与allprojects块及根级别的repositories区别

    http://blog.sina.com.cn/s/blog_72ef7bea0102vvg3.html

  9. shell脚本学习总结04--终端信息的获取和设置

    tput tput 命令将通过 terminfo 数据库对您的终端会话进行初始化和操作.通过使用 tput,您可以更改几项终端功能,如移动或更改光标.更改文本属性,以及清除终端屏幕的特定区域. 文本属 ...

  10. 第三篇:CUDA 标准编程模式

    前言 本文将介绍 CUDA 编程的基本模式,所有 CUDA 程序都基于此模式编写,即使是调用库,库的底层也是这个模式实现的. 模式描述 1. 定义需要在 device 端执行的核函数.( 函数声明前加 ...