前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于Django的电子商务网站开发(连载10)

基于Django的电子商务网站开发(连载10)

作者头像
顾翔
修改2023-09-20 18:11:52
8410
修改2023-09-20 18:11:52
举报
文章被收录于专栏:啄木鸟软件测试

3.3 用户信息模块

用户信息模块包括“用户信息的注册”“用户登录”“显示用户信息”和“用户密码的修改”。其中“用户信息的注册”与“用户登录”在本书第2章进行了详细地描述,这一章将进行系统地归纳与优化。数据模型如下。

...#用户class User(models.Model): username = models.CharField(max_length=50) #用户名 password = models.CharField(max_length=50) #密码 email = models.EmailField() #Email def __str__(self): return self.username ...

3.3.1用户注册

只有通过用户注册的用户才可以登录系统,根据需求,在这个系统中用户注册需要填写用户登录名、密码和Emil地址。

1. urls.py

...url(r'^register/$', views.register), ...

2.views.py

把所有的表单定义在一个名为forms.py的文件中,用户注册的表单定义如下。

...from django import forms #定义注册表单模型class UserForm(forms.Form): username = forms.CharField(label='用户名',max_length=100) password = forms.CharField(label='密码',widget=forms.PasswordInput())email = forms.EmailField(label='电子邮件')...

在这里。

(1)username 中的max_length=100表示输入的最大字符限制在100个。

(2)password 中的widget=forms.PasswordInput()表示文本信息为密码格式。

(3)email中的EmailField表示格式为HTML5中的Email格式。

然后在views.py中通过fromgoods.forms import UserForm来引入。下面是views.py中关于注册的代码。

...from goods.forms import UserForm...#用户注册def register(request): if request.method == "POST": #判断表单是否提交状态 uf = UserForm(request.POST) #获得表单变量 if uf.is_valid(): #判断表单数据是否正确 #获取表单信息 username = (request.POST.get('username')).strip() #获取用户名信息 password = (request.POST.get('password')).strip() #获取密码信息 email = (request.POST.get('email')).strip()#获取Email信息#查找数据库中是否存在相同用户名 user_list = User.objects.filter(username=username) if user_list:#如果存在,报"用户名已经存在!"错误信息并且回到注册页面return render_to_response('register.html',{'uf':uf,"error":"用户名已经存在!"}) else: #否则将表单写入数据库 user = User() user.username = username user.password = password user.email = email user.save() #返回登录页面 uf = LoginForm() return render_to_response('index.html',{'uf':uf}) else: #如果不是表单提交状态,显示表单信息 uf = UserForm()return render_to_response('register.html',{'uf':uf})...

(1)通过ifrequest.method == "POST":来判断当前状态是否为表单提交状态,如果不是,那么显示表单注册页面: uf = UserForm(),return render_to_response('register.html',{'uf':uf}),否则验证提交的表单信息:ifuf.is_valid():。

(2)判断如果表单提交正确,如果正确,获取提交的信息:username = (request.POST.get('username')).strip()和password =(request.POST.get('password')).strip()。

(3)通过user_list=User.objects.filter(username=username)的返回变量user_list是否为空来判断注册的用户名是否已经被注册过,如果未注册过那么提示错误信息,否则接受提交的注册信息,将其保存在数据库中...user.save()。

在这里特别需要注意的是,由于后面需要用到基于Requests的接口测试,所以这里必须使用request.POST.get('username')来获取表单数据。

3.模板

模板文件为register.html,其内容为。

{%load staticfiles%}<!DOCTYPE html><html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! --> <meta name="description" content=""> <meta name="author" content=""> <title>电子商务系统-注册</title> <!-- Bootstrap core CSS --> <link href="{%static 'css/signin.css'%}" rel="stylesheet"--> <!-- Custom styles for this template --> <link href="{%static 'css/bootstrap.min.css'%}" rel="stylesheet"--> <link href="{%static 'css/my.css'%}" rel="stylesheet"> </head> <body> <div> <form method="post" enctype="multipart/form-data"> <h2>电子商务系统-注册</h2> {{uf.as_p}} <p style="color:red">{{error}}</p><br> <button class="btn btn-lg btn-primary btn-block" type="submit">注册</button><br> <a href="/index/">登录</a> </form> </div><!-- /container --> </body></html>

其中。

(1){{error}}:显示的是错误提示信息。

(2){{uf.as_p}}:显示的是表单信息。

如图3-2所示。

图3-2 注册页面

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 3.3 用户信息模块
    • 3.3.1用户注册
      • 1. urls.py
      • 2.views.py
      • 3.模板
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档