
实现通过表单提交数据到数据库,模拟账号注册和登录
项目结构:
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}账号注册成功')
完成结果如图所示:
数据库:
密码错误:
登录成功:
注册成功:
数据库改动
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)