antd pro v5与django前后端项目开发前准备内容

参考资料【极其推荐】:ant design pro v4(typescript)视频

1.如何代理到后端服务器?

配置proxy.ts
在这里插入图片描述

不走 mock 数据
npm run start:no-mock
在这里插入图片描述
django后端日志

Not Found: /api/login/
[11/Sep/2020 14:17:16] "POST /api/login/ HTTP/1.1" 404 2090

在这里插入图片描述
后端路由修改成匹配前端的

url(r'^api/login/', login_view, name='login'),

django后端日志

Forbidden (CSRF cookie not set.): /api/login/
[11/Sep/2020 14:18:50] "POST /api/login/ HTTP/1.1" 403 2837

需要处理CSRF
前端处理

res.setHeader('Access-Control-Allow-Origin', '*');  // CSRF暂时处理方案

在这里插入图片描述
后端处理
settings导入了csrf中间件

'django.middleware.csrf.CsrfViewMiddleware',

在这里插入图片描述
方法上添加CSRF注解

@csrf_exempt
def login_view(request):
    print('触发后端登录函数')
    return HttpResponse("<h1>触发后端登录函数!</h1>")

在这里插入图片描述

可以触发了:

触发后端登录函数
[11/Sep/2020 14:38:10] "POST /api/login/ HTTP/1.1" 200 34

然后因为ant design pro登录要求传参,我们需要对后端的视图函数进行修改,先在后端写一个死数据,将前端的mock数据取过来:

@csrf_exempt
def login_view(request):
    print('触发后端登录函数')
    print(request)
    res = {
        'name': 'Admin',
        'avatar': 'https://gw.alipayobjects.com/zos/antfincdn/XAosXuNZyF/BiazfanxmamNRoxxVxka.png',
        'userid': '00000001',
        'email': 'antdesign@alipay.com',
        'signature': '海纳百川,有容乃大',
        'title': '交互专家',
        'group': '蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED',
        'tags': [
          {'key': '0',
           'label': '很有想法的',
           },
            {'key': '1',
             'label': '专注设计',
             },
            {'key': '2',
              'label': '辣~',
             },
            {'key': '3',
              'label': '大长腿',
             },
            {'key': '4',
              'label': '川妹子',
             },
            {'key': '5',
              'label': '海纳百川',
             },
        ],
        'notifyCount': 12,
        'unreadCount': 11,
        'country': 'China',
        'access': 'admin',          # 权限角色
        'geographic': {
            'province': {
                'label': '浙江省',
                'key': '330000',
            },
            'city': {
                'label': '杭州市',
                'key': '330100',
            },
        },
        'address': '西湖区工专路 77 号',
        'phone': '0752-268888888',
    }
    return JsonResponse({"result": res, "code": 200, "message": ""})

请求发成功了,数据返回了
在这里插入图片描述
currentUser登录验证时候此方法也需要满足数据验证通过【暂时没去整理这个方法的作用】
在这里插入图片描述
django后端补上这个方法和url,返回的数据先做成和login的一样,但是还没通过,确认一下要什么数据才能通过:

找到原因啦!!
login和currentUser的方法参数我给反了:
后端改成如下:

from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login, logout
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from django.http import JsonResponse
import json

# Create your views here.


@csrf_exempt
def login_view(request):
    if request.method == 'POST':
        req_data = json.loads(request.body)
        username = req_data.get("username")
        password = req_data.get("password")
        type = req_data.get("type")
        print(username, password, type)
        user = authenticate(username=username, password=password)
        if user:
            print('后端登录')
            login(request, user)        # 后端登录
            res = {'name': 'admin',
                   'password': 'admin',
                   'status': 'ok',
                   'type': 'account'}
        else:       # 数据库校验失败
            res = {'status': 'error',
                   'type': '', }
        return JsonResponse(res)
    else:       # 请求出问题
        res = {'status': 'error',
               'type': ''}
        return JsonResponse(res)


@csrf_exempt
def currentUser(request):
    '''暂时用户表没拓展这么多属性,先不做权限
    '''
    if request.method == 'GET':
        res = {
            'name': 'HAHAadmin',
            'avatar': 'https://gw.alipayobjects.com/zos/antfincdn/XAosXuNZyF/BiazfanxmamNRoxxVxka.png',
            'userid': '00000001',
            'email': 'antdesign@alipay.com',
            'signature': '海纳百川,有容乃大',
            'title': '交互专家',
            'group': '蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED',
            'tags': [
                {'key': '0',
                 'label': '很有想法的',
                 },
                {'key': '1',
                 'label': '专注设计',
                 },
                {'key': '2',
                 'label': '辣~',
                 },
                {'key': '3',
                 'label': '大长腿',
                 },
                {'key': '4',
                 'label': '川妹子',
                 },
                {'key': '5',
                 'label': '海纳百川',
                 },
            ],
            'notifyCount': 12,
            'unreadCount': 11,
            'country': 'China',
            'access': 'admin',          # 权限角色
            'geographic': {
                'province': {
                    'label': '浙江省',
                    'key': '330000',
                },
                'city': {
                    'label': '杭州市',
                    'key': '330100',
                },
            },
            'address': '西湖区工专路 77 号',
            'phone': '0752-268888888',
        }
        return JsonResponse(res)
    else:
        res = {}
        return JsonResponse(res)

前端那句CSRF也可以去掉
user.ts里面
在这里插入图片描述
成功效果:
提交表单后会立即出现登陆成功提示并重定向到欢迎页面
在这里插入图片描述

接下来需要改成数据库用户校验的,将数据的值取出来,塞到表格中,然后表格每一行触发后生成echarts图表~

2. 自定义前端样式

2.1. 菜单图标

Icon图标
命名为outlined前面那个单词小写:
在这里插入图片描述
config.ts-icon
在这里插入图片描述
效果
在这里插入图片描述

2.2 favicon、加载图片、首页logo

可以直接替换的在publicsrc/assets文件夹下
首页svg logo可以不现实或者替换为自定义的logo,logo应该放在public文件夹下
在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值