Django框架课-用户名密码登录

Django框架课-用户名密码登录

创建账号系统

建立player表

数据库里的表对应的是django里的class

进入acapp/game/models里。models文件夹里是存放数据库表的。

新建player文件夹,添加一个__init__.py(touch __init__.py)

然后写player.py

vim player.py

(如果忘记了一些指令或者关键字库名等,可以使用python3 manage.py shell打开交互式界面,这个可以自动补全来提示.exit可以退出)

player.py

class Player(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE)
    photo = models.URLField(max_length = 256,blank = True)

    def __str__(self):
        return str(self.user)

至此,定义了一张player表,有两个关键字:user(用于表示player和哪个user是一一对应的)、photo(用户头像)

将player表注册到管理员页面

打开acapp/game/admin.py

from django.contrib import admin
from game.models.player.player import Player

# Register your models here.

admin.site.register(Player);

然后执行两句话,将我们的表应用到数据库里

python3 manage.py makemigrations
python3 manage.py migrate

然后登录django的管理员界面app4346.acapp.acwing.com.cn/admin/,可以看到多了一个用户组player,可以直接在这里新加一个用户试试。

如何判断前端是web端还是acapp端

export class AcGame {
    constructor(id,AcWingOS){ // acapp端会传AcWingOS(一些接口),web端不穿这个参数
        this.id = id;
        this.$ac_game = $('#' + id);
        this.AcWingOS = AcWingOS;

        this.menu = new AcGameMenu(this);
        this.playground = new AcGamePlayground(this);

        this.start();
    }
    
    start(){
    }
}

主类加一个AcWingOS参数,acapp就会传这个参数,web端只传id这个参数

client端向server端请求信息

client会向server端请求信息,要完成views、urls、js三部分

刚开始写代码,将所有的请求类型使用get来写,更容易调试。

写views的函数等

用户的信息放入acapp/game/views/settings里,未来settings里可以设置信息

acapp/game/views/settings/getinfo.py

from django.http import JsonResponse
from game.models.player.player import Player


def getinfo_acapp(request):
    player = Player.objects.all()[0]
    return JsonResponse({
            'result':'success',
            'username':player.user.username,
            'photo':player.photo,
        })

def getinfo_web(request):
    player = Player.objects.all()[0]
    return JsonResponse({
            'result':'success',
            'username':player.user.username,
            'photo':player.photo,
        })


def getinfo(request):
    platform = request.GET.get('platform')
    if platform == "ACAPP":
        return getinfo_acapp(request)
    else:
        return getinfo_web(request)

写urls:

修改acapp/game/urls/settings/index.py

from django.urls import path
from game.views.settings.getinfo import getinfo


urlpatterns = [
        path("getinfo/",getinfo,name="settings_getinfo"),
]

访问app4346.acapp.acwing.com.cn/settings/getinfo/:

image

client向server请求网址,getinfo函数返回给client信息。

写js

38:00

settings/zbase.js

渲染前端页面、向后端请求数据

写js:登录注册界面

写js、调css

传头像图片,渲染头像

实现登录、注册、退出登录动作

这三个功能都与后端有所交互,每一个都要views、urls、js一块写。

前端登录与注册的跳转

先把每个元素都“扣”出来,然后去绑定函数

“扣出来”说的是取到这个divinput这个元素,比如下面这个要扣出来ac-game-settings-login类div标签

this.$login = this.$settings.find(".ac-game-settings-login");

然后需要实现点击绑定函数:
点注册->跳转到注册界面,点登陆->到登录页面,这些是在前端做的事情

登录功能

与后端交互数据写老三样:viewsurlsjs

views是一些处理数据的函数,urls是每一个函数对应一个url、js是写前端的内容

js去携带这用户输入的账号密码,对url发送get请求,将数据通过views对应的函数发送到服务器进行验证,然后返回json结果。

退出功能

注册功能

posted @ 2023-02-28 14:24  r涤生  阅读(88)  评论(0编辑  收藏  举报