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

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

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),
...


2views.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='电子邮件')
...


在这里。

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

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

3email中的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所示。

       

image.png

          3-2 注册页面

目录
相关文章
|
搜索推荐 算法 前端开发
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
384 4
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
|
前端开发 搜索推荐 算法
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
中草药管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的中草药管理与推荐平台。具体功能如下: - 系统分为普通用户和管理员两个角色 - 普通用户可以登录,注册、查看物品信息、收藏物品、发布评论、编辑个人信息、柱状图饼状图可视化物品信息、并依据用户注册时选择的标签进行推荐 和 根据用户对物品的评分 使用协同过滤推荐算法进行推荐 - 管理员可以在后台对用户和物品信息进行管理编辑
416 12
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
|
安全 测试技术 Python
基于Django的电子商务网站开发(连载39)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
161 0
基于Django的电子商务网站开发(连载39)
|
存储 安全 前端开发
基于Django的电子商务网站开发(连载37)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
190 0
基于Django的电子商务网站开发(连载37)
|
测试技术 Python
基于Django的电子商务网站开发(连载36)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
129 0
基于Django的电子商务网站开发(连载36)
|
XML 测试技术 数据库
基于Django的电子商务网站开发(连载34)
基于Django的电子商务网站开发(连载34)
110 0
基于Django的电子商务网站开发(连载34)
|
XML 测试技术 数据格式
基于Django的电子商务网站开发(连载33)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
139 0
基于Django的电子商务网站开发(连载33)
|
SQL XML 前端开发
基于Django的电子商务网站开发(连载40)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
295 0
|
测试技术 Python
基于Django的电子商务网站开发(连载38)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
130 0
|
XML 测试技术 数据格式
基于Django的电子商务网站开发(连载35)
基于Django的电子商务网站开发(连载35)
149 0

热门文章

最新文章