Django笔记(2)

Django笔记(2),第1张

Django笔记(2)

实现通过表单提交数据到数据库,模拟账号注册和登录

项目结构:

1:在templates/polls目录下创建登陆页面的html文件,这里的文件名为:login.html,内容为:
 




    
    login


表单提交测试




2:在views.py文件中创建函数用于返回这个页面:
 

def crt_login(request):
    return render(request, 'polls/login.html')

3:在polls/urls.py文件中写入路径:

app_name = 'polls'
urlpatterns = [
    path('', views.IndexView.as_view(), name='index'),
    # ex: /polls/5/
    path('download//', views.DetailView.as_view(), name='detail'),
    # ex: /polls/5/results/
    path('/results/', views.ResultsView.as_view(), name='results'),
    # ex: /polls/5/vote/
    path('/vote/', views.vote, name='vote'),
    # script 1
    path('script/', views.script, name='script'),
    # crt user page
    path('login/', views.crt_login, name='login'),
    # login success page
    path('success/', views.login_test, name='loginsuccess')
]

4:在主页面生成链接:

take me to the login page

到这里就完成了登陆页面的创建,如图所示:

 

 5:创建登陆账号成功时候跳转的网页:

文件名为loginsuccess.html,第一步中的action内即为它的链接,路径的添加如第三步最后一行所示:
内容为:
 




    
    login success


{{ name }}登录成功

6:创建处理数据的函数:

在这一步之前需要在数据库中创建相应的表:

在models.py文件中输入:

class UserData(models.Model):
    nid = models.AutoField(primary_key=True)
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=32,)

    def __str__(self):
        return self.name

然后在manage.py同级目录下执行

python manage.py makemigrations
python manage.py migrate

将数据改动迁移到数据库中,

在views.py文件内写入函数:
 

def login_test(request):
    print('注册中')
    # 获取页面传输来的数据
    name = request.POST.get('username')
    password = request.POST.get('password')
    print('用户名:', name, '密码:', password,)
    # 获取当前数据库中的账号信息
    curr_data = UserData.objects.all()
    user_data_dict = {}
    # 将数据库中的信息整理进入字典方便查找对比
    for user in curr_data:
        user_data_dict[f'{user.name}'] = user.password
    # 如果name已经存在,根据密码是否正确来决定返回数据
    if name in user_data_dict.keys():
        if password != user_data_dict[f'{name}']:
            pass
            return HttpResponse('密码错误请重新输入密码')
        else:
            return render(request, 'polls/loginsuccess.html', {'name': name})
    # name不存在,创建新的账号
    else:
        db_data = UserData(name=name, password=password)
        db_data.save()
        return HttpResponse(f'{name}账号注册成功')

完成结果如图所示:

数据库:

 密码错误:

登录成功:

 注册成功:

 

 数据库改动

 

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5651641.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存