◢Django 购物项目 3

注册用户【客户注册在外部注册,商业人员由已登录的人员代为注册】【用户名不能相同】【idcard通过有无session来确认是0是1】

7adef0f4b54b4da2a5cfa7cd5eafc21a.png

c1bbd7d7f05d489895a2a469e12529d0.png

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册</title>
    <style>
        .box{
            width: 600px;
            margin: 0 auto;
            margin-top: 100px;
        }
        .font{
            font-size: 20px;
            font-weight: bold;
            display: block;
            margin-left: 43%;
        }
    </style>
    <link rel="stylesheet" href={% static 'plugins/bootstrap-3.4.1-dist/css/bootstrap.min.css' %}>
</head>
<body>
<div class="box">
    <span class="font">
        gw注册
    </span>
  <form action="/reg/" method="post">
  {% csrf_token %}
      {% for i in form %}
  <div class="form-group">
    <label>{{ i.label }}</label>
    {{ i }}<!-- 输入框组 -->
  <span style="color: red">{{ i.errors.0 }}</span>
  </div>
    {% endfor %}
  <button type="submit" class="btn btn-default">Submit</button>
</form>
</div>
<script src={% static 'js/jquery-3.6.0.min.js' %} ></script>
<script src={% static 'plugins/bootstrap-3.4.1-dist/js/bootstrap.min.js' %}></script>
</body>
</html>
def reg(request):
    if request.method == 'GET':
        fm = RModelForm()
        return render(request, 'reg.html', {'form':fm})  # 样式选用一个样式

    fm = RModelForm(data=request.POST)
    if fm.is_valid():
        if 'idd' in request.session:#客户通过登陆页面注册,商业是商业人员注册
            models.Commodity.objects.create(username=fm.cleaned_data['username'], password=fm.cleaned_data['password'],idcard=0)
            return redirect('/show/')#商业注册成功返回至自己的账号
        models.Commodity.objects.create(username=fm.cleaned_data['username'],password=fm.cleaned_data['password'],idcard=1)
        return redirect('/index/')#客户注册成功到登陆页面进行登陆
    return render(request, 'reg.html', {'form':fm})  #报错
#ModelForm继承会超类中判断完类中所有的钩子,子类也会继承钩子方法

class RModelForm(IModelForm):
    repassword = forms.CharField(
            label='确认密码',
            widget=forms.PasswordInput(render_value=True)
        )
    #继承超类的class Meta
    def clean_username(self):
        txt_user = self.cleaned_data["username"]
        exits = models.Commodity.objects.filter(username=txt_user).exists()
        if exits:
            raise ValidationError("账号已被注册")
        return txt_user

    def clean_password(self):#重写clean_password方法
        #print('---------------->',self.cleaned_data.get('password'),self.cleaned_data.get('repassword'))
        return self.cleaned_data.get('password')

    def clean_repassword(self):
        #print('re---------------->', self.cleaned_data.get('password'), self.cleaned_data.get('repassword'))
        pwd = self.cleaned_data.get('password')
        pwd2 = self.cleaned_data.get('repassword')
        if pwd != pwd2:
            raise ValidationError("密码不一致")
        return pwd2

客户

在index.html中加上跳转至注册页面的链接,在bootstrap中选择此样式

a05adcead9504a7991b749c5facaab13.png

 2e262738a8de4891bee7fcfe8f18ae7d.png

<a class="btn btn-default" href="/reg/" role="button" style="margin-left: 104px;">注册</a>

商业

e274c295e15145d883cd2e2a1e2a5342.png

bd86c500db0b40a4a82719ca5e576ac7.png

商品操作【白底按钮】

 跳转至另一页面,页面有table与form
table只显示商品名称和删除按钮两列
最后添加一个form表单
该表单内包含【商品名称,商品数量,商品定价及提交按钮】点击提交按钮,跳转至本页面
表格内更新新增商品

 2b6fababc1a44656a8e86f671aeb3e1f.png616c0238cdb34f63a4f1673454d61a20.png

 有兴趣加上对商品的校验【是否重名】

class EIModelForm(IModelForm):#继承,不用再写构造方法,重写Meta
    class Meta:
        model = models.Super
        fields = ['name', 'price','number']
{% extends 'nav.html' %}
{% block title %}商业{% endblock %}
{% block css %}
    .change{
            display: block;
            background-color: red;
            color: #fff;
            width: 50px;
            padding: 0 10px;
            text-decoration: none;
        }
{% endblock %}
{% block table %}
    <table class="table table-hover">
        <tr>
                <td>商品名称</td>
                <td>操作</td>
           </tr>
            {% for i in info %}
            <tr>
                <td>{{ i.name }}</td>
                <td>
                    <a href="/{{ i.id }}/dels/" class="change">删除</a>
                </td>
            </tr>
        {% endfor %}
    </table>
    <form class="form-inline" method="post">
    {% csrf_token %}
        {% for i in form %}
  <div class="form-group">
    <label for="exampleInputName2">{{ i.label }}</label>
{#    <input type="text" name="name" class="form-control" id="exampleInputName2" placeholder="name">#}
      {{ i }}
  </div>
        {% endfor %}
  <button type="submit" class="btn btn-default">Send Sure</button>
</form>
{% endblock %}

通过点击操作按钮,以get形式进入einfo,使用ModelForm生成input框,填写form并提交(post)更新该页面数据,点击删除也是一样的,info可以写在外围

def einfo(request):#商业修改
    fm=EIModelForm()
    if request.method == 'GET':
        info = models.Super.objects.all()
        return render(request,'einfo.html',{'info':info,'form':fm})
    '''新增的商品加入表格中'''
    # print(request.POST.get('name'),request.POST.get('number'),request.POST.get('price'))
    models.Super.objects.create(name=request.POST.get('name'),price=request.POST.get('price'),number=request.POST.get('number'))
    info = models.Super.objects.all()
    return render(request,'einfo.html',{'info':info,'form':fm})

 删除商品【不做停留,直接返回127.0.0.1:8000/einfo/页面】

def dels(request,nid):
    # print(models.Super.objects.filter(id=nid).first().name)
    models.Super.objects.filter(id=nid).delete()
    return redirect('/einfo/')

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值