从零开始学Django --03 实现登录注册

实现登录注册

以登录为例,要想实现登录: 让用户访问到登录界面、连接到数据库上

访问登录界面

登录界面通常会包含: html文件、css文件、js文件、image文件,这些东西通常称之为静态资源

静态资源放哪?

创建静态资源的目录

点击项目名 ,右键 , new , directory
创建两个: 一个叫static(通用的名字,也可以自己起),另一个叫templates (用开发工具创建会默认带有)
那么这两个目录作为静态资源文件使用的话,需要配置

配置静态资源

第一个: 配置templates(这个文件夹里放的是html文件) ,默认都是配置好的

第二个: 配置static,这个文件夹放的是css、js、image等文件

在这里插入图片描述

验证静态资源可访问

运行项目,运行成功,在浏览器里访问:如下 http://127.0.0.1:8000/static/image/1.jpg
但是templates文件下的资源不可访问,这是对的,那么怎么访问html文件?

访问login.html文件

定义内部的指向

在app 下面的views.py里编写代码:

def login(request):
    if request.method == 'GET':
        return render(request,'login.html')

这个函数被get请求访问会指向login.html

定义外部访问和关联

在urls.py文件中添加外部访问路径和对views的指向

from  app import views

urlpatterns = [
path(‘admin/’, admin.site.urls),
path(‘login/’,views.login),
]

login/ 就是浏览器访问路径
views.login指向的是views的函数

访问验证

在浏览器上 http://127.0.0.1:8000/login 可以访问到登录界面

实现登录

先连接数据库

在这里插入图片描述

创建对应的用户表

django可以手动创建表,然后映射以下,也可以通过模型自动创建表,我们选择第二种方式

创建模型

在app下面的models.py 文件中 创建

class Users(models.Model):
    username = models.CharField('用户名',max_length=20,unique=True,null=False)
    password = models.CharField(max_length=16,null=False)
    email = models.CharField(max_length=30,null=False)
    dingyue = models.BooleanField(max_length=8,default=True)
    token  = models.CharField(max_length=100)
class Meta:
    # 指定表名
    db_table='users'
pass

每一个属性就是表的列,后面的约束条件,默认max_length必须有,默认都是非空,也就是null可以不写

自定映射生成表

在生成表之前,需要下载pymysql或者下载mysqlclient
下载pymysql,需要在(最好是在和项目名一样的文件夹下那个)init.py文件中添加以下代码

import pymysql

pymysql.install_as_MySQLdb()

然后开始在teminal 中使用命令生成表
第一个命令 python manage.py makemigrations
回车,第二个命令 python manag.py migrate

然后在数据库中就可以看到users表

判断登录是否成功

在views.py的login函数中,

def login(request):
    if request.method == 'GET':
        return render(request,'login.html')
    else:
        #接收用户名和密码
        username=request.POST.get("nickname")
        password=request.POST.get("password")
        print(username+"*****"+password)
        # 验证用户名是否存在,密码是否正确
        try:
            users=Users.objects.get(username=username)
            if users.password == password:
                return render(request,'index.html')
            else:
                return render(request, 'login.html',{'response':'用户名或者密码错误'})
        except:
            return render(request,'login.html',{'response':'用户名或者密码错误'})
最后展示以下前端的html代码,其他的后续再上传
     <h3>登录</h3>
        <p>已有账号,直接登录。</p>
        <form method="post" action="/login/">
            {% csrf_token %}
            <div>
                <span>用户名<label>*</label></span>
                <input type="text" name="nickname">
            </div>
            <div>
                <span>密码<label>*</label></span>
                <input type="password" name="password">
            </div>
            <a class="forgot" href="#">忘记密码?</a>
            <input type="submit" value="立即登陆">
            <span style="color: red;font-size: 20px">{{ response }}</span>
        </form>
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值