Django+pycharm+mysql 实现用户登录/注册

首先是让Django项目与mysql数据库初步建立连接

具体做法见:pycharm连接mysql

这里讲一下我在做这一步遇到的问题。一般Driver 那里的com.mysql.cj.jdbc.Driver是会自动显示的,但我一开始不显示
在这里插入图片描述
因为我的mysql-connector-java-8.0.19文件夹如下,重复了,(这个是我拿下载到的zip选择解压文件得到的),得选第二个mysql-connector-java-8.0.19才有效:
在这里插入图片描述
正确的mysql-connector-java-8.0.19包含如下文件,
在这里插入图片描述
ok,按以上步骤完成便可与mysql初步建立连接了。
连接建立后便可以在pycharm直接对数据库进行操作了

这里的对DB navigator的操作自己随便点点就可以懂了,无非就是增删改查,不细说

接下来就是一些配置问题

在settings.py里做如下修改:
在这里插入图片描述
这里的name填写你要连接的MySQL中的数据库名字
在这里插入图片描述
在这里注册以下app,my_app是我创建的app的名字
然后对init.py做如下修改:
在这里插入图片描述

在models.py中添加如下代码,创建一个user模型:
在这里插入图片描述

然后在admin.py中注册一下该模型:
在这里插入图片描述

这样我们就在数据库中创建了一个user表,如图:
在这里插入图片描述随后通过connection在表中添加数据,这个自己摸索一下即可实现
在这里插入图片描述这样表中就有了两个我们插入的数据:
在这里插入图片描述

最后一步,在终端执行如下命令:
python manage.py makemigrations
python manage.py migrate
这两个命令的作用可以自行网上了解
在这里插入图片描述

到这里就剩最后一步了,即登录页面提交表单,随后到数据库中验证

找到登录页面的表单:
在这里插入图片描述
其中action代表你将表单提交至何处(后面我们会详写check_login),用户名和密码输入里的name,我们后面会根据这两个name获取两个框中输入的值(见下图代码,点击登录时提交表单,获取到了id为login-username框中输入的值,而userName恰好就是上图里的name)
在这里插入图片描述

到urls.py中添加check_login:
在这里插入图片描述最后到views.py中详细写一下check_login.

先如下,暂时并未与数据库相连接

def check_login(request):
    if request.method == "POST":
        username = request.POST.get('userName', None)    #userName为上图form表单中用户名那里的name值
        password = request.POST.get('passWord', None)

        if username =='admin' and password =='123456':
            return redirect('homepage')       #跳转至homepage页面
        else:
            return render(request, 'login.html')

在登录页面,用户名输入admin,密码输入123456
若可以跳转至homepage页面,则代表成功获取到了框中输入的用户名和密码

接下来就是连接数据库了,代码如下:

def check_login(request):
    if request.method == "POST":
        username = request.POST.get('userName', None)
        password = request.POST.get('passWord', None)

        #if username =='admin' and password =='123456':///此处试验成功,成功从表单处得到输入的用户名和密码
        #    return redirect('homepage')
        #else:
        #    return render(request, 'register.html')
        if username and password:  # 确保用户名和密码都不为空
            username = username.strip()
            try:
                user = models.User.objects.get(name=username)        #看前面创建的user表中是否有name值符合登录页面输入的用户名
            except:
                return render(request, 'register.html')        #数据库中没有相应的用户名,跳转至注册页面
            if user.password == password:
                return redirect('homepage')

    return render(request, 'login.html')

ok,这样就可以在Django中实现登录功能啦

发布了20 篇原创文章 · 获赞 3 · 访问量 1142

猜你喜欢

转载自blog.csdn.net/qq_38175040/article/details/104867747