栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django笔记(2)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django笔记(2)

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

项目结构:

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




    
    login


表单提交测试

{% csrf_token %}

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}账号注册成功')

完成结果如图所示:

数据库:

 密码错误:

登录成功:

 注册成功:

 

 数据库改动

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/649449.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号