django 在分类下,添加商品

27 篇文章 0 订阅
27 篇文章 0 订阅

model.py


# 商品分类模型
class Cates(models.Model):
    name = models.CharField(max_length=20)
    pid = models.IntegerField()
    path = models.CharField(max_length=50)

# 商品模型
class Goods(models.Model):
    # id 所属分类,商品名,图片,添加时间,销量

    cateid = models.ForeignKey(to="Cates", to_field="id")
    goodsname = models.CharField(max_length=50)
    title = models.CharField(max_length=255)
    price = models.FloatField()
    goodsnum = models.IntegerField()
    pic_url = models.CharField(max_length=255)
    goodsinfo = models.TextField()
    ordernum =  models.IntegerField(default=0)
    clicknum = models.IntegerField(default=0)
    # 0 新品,1热卖,2推荐,3下架
    status = models.IntegerField(default=0)
    addtime = models.DateTimeField(auto_now_add=True)

GoodsViews.py

from django.shortcuts import render
from django.http import HttpResponse

from . CatesViews import get_cates_all
from . UsersViews import uploads_pic

from .. models import Cates,Goods

# Create your views here.

# 商品添加 表单
def goods_add(request):

    # 获取当前所有的分类数据
    data = get_cates_all()
    # 分配数据
    context = {'catelist':data}

    # 显示一个添加的表单
    return render(request,'myadmin/goods/add.html',context)
# 商品添加页
def goods_insert(request):
    try:
    
        # 接收表单数据
        data = request.POST.dict()
        data.pop('csrfmiddlewaretoken')

        # 处理分类对象   因为data['cateid']是外键,所以只能接受对象,将值处理为Cates对象,在给data方可保存
        data['cateid'] = Cates.objects.get(id=data['cateid'])
        # 判断是否有图片上传
        myfile = request.FILES.get('pic',None)
        if not myfile:
            return HttpResponse('<script>alert("必须上传商品图片");history.back(-1);</script>')
        # 处理  上传的文件
        data['pic_url'] = uploads_pic(myfile)

        # 执行添加
        ob = Goods(**data)
        ob.save()
        
        return HttpResponse('<script>alert("商品添加成功");location.href="/myadmin/goods/index/";</script>')
    except:
        pass

    return HttpResponse('<script>alert("商品添加失败");history.back(-1);";</script>')

add.py

{% extends 'myadmin/index.html' %}

{% block title %}
<title>后台商品添加</title>
{% endblock %}


{% block con %}
<div class="row-content am-cf">
    <div class="row">
        <div class="am-u-sm-12 am-u-md-12 am-u-lg-12">
            <div class="widget am-cf">

                <div class="widget-head am-cf">
                    <div class="widget-title am-fl">
                        商品添加
                    </div>
                    <div class="widget-function am-fr">
                        <a href="javascript:;" class="am-icon-cog">
                        </a>
                    </div>
                </div>
                <div class="widget-body am-fr">
                    <form action="{% url 'myadmin_goods_insert' %}" method="POST" enctype="multipart/form-data" class="am-form tpl-form-line-form">
                        {% csrf_token %}
                        
                        <div class="am-form-group">
                            <label for="user-name" class="am-u-sm-3 am-form-label">
                                商品所属分类
                            </label>
                            <select name="cateid" data-am-selected="{btnSize: 'sm'}" style="display: none;">
                              {% for v in catelist %}
                              <option value="{{ v.id }}" {% if v.pid == 0 %} disabled {% endif %} >{{ v.sub }}{{ v.name }}</option>
                              {% endfor %}
                            </select>
                        </div>

                        <div class="am-form-group">
                            <label for="user-name" class="am-u-sm-3 am-form-label">
                                商品名称
                            </label>
                            <div class="am-u-sm-9">
                                <input type="text" name="goodsname" class="tpl-form-input" 
                                 placeholder="商品名称">
                            </div>
                        </div>
                        
                        <div class="am-form-group">
                            <label for="user-name" class="am-u-sm-3 am-form-label">
                              商品标题
                            </label>
                            <div class="am-u-sm-9">
                                <input type="text" name="title"  class="tpl-form-input" 
                                 placeholder="请输入商品标题">
                            </div>
                        </div>

                        <div class="am-form-group">
                            <label for="user-name" class="am-u-sm-3 am-form-label">
                              商品价格
                            </label>
                            <div class="am-u-sm-9">
                                <input type="text" name="price"  class="tpl-form-input" 
                                 placeholder="请输入商品价格">
                            </div>
                        </div>


                        <div class="am-form-group">
                            <label for="user-name" class="am-u-sm-3 am-form-label">
                              商品库存
                            </label>
                            <div class="am-u-sm-9">
                                <input type="number" name="goodsnum"  class="tpl-form-input" 
                                 placeholder="请输入商品库存">
                            </div>
                        </div>

                        <div class="am-form-group">
                          <label for="user-weibo" class="am-u-sm-3 am-form-label">
                            封面图 
                          </label>
                          <div class="am-u-sm-9">
                              <div class="am-form-group am-form-file">
                                  <div class="tpl-form-file-img">
                                      <img id="showImg" style="width: 200px;" src="assets/img/a5.png" alt="">
                                  </div>
                                  <button type="button" class="am-btn am-btn-danger am-btn-sm">
                                    <i class="am-icon-cloud-upload"></i> 添加封面图片</button>
                                  <input id="ReadFile" name="pic" type="file" multiple="">
                              </div>
                          </div>
                        </div>
                        <script type="text/javascript">
                            $('#ReadFile').change(function(){
                                var file = this.files[0];

                                //限定上传文件的类型,判断是否是图片类型
                                if (!/image\/\w+/.test(file.type)) {
                                    alert("只能选择图片");
                                    return false;
                                }
                                var reader = new FileReader();
                                reader.readAsDataURL(file);
                                reader.onload = function(e) {
                                    base64Code = this.result;
                                    //把得到的base64赋值到img标签显示
                                    $("#showImg").attr("src", base64Code);
                                }
                            })
                        </script>

                  
                        <link rel="stylesheet" type="text/css" href="/ueditor/UE/third-party/SyntaxHighlighter/shCoreDefault.css">
                        <script type="text/javascript" src="/ueditor/UE/third-party/SyntaxHighlighter/shCore.js"></script>
                        <script type="text/javascript" src="/ueditor/UE/ueditor.config.js"></script>
                        <script type="text/javascript" src="/ueditor/UE/ueditor.all.min.js"></script>
                        <script type="text/javascript" src="/ueditor/UE/lang/zh-cn/zh-cn.js"></script>


                        <div class="am-form-group">
                            <label for="user-intro" class="am-u-sm-3 am-form-label">商品简介</label>
                            <div class="am-u-sm-9">
                                <!-- <textarea name="descr" class="" rows="10" id="user-intro" placeholder="请输入商品简介"></textarea> -->
                                <!-- <script id="editor" type="text/plain" style="width:100%;height:500px;"></script> -->
                                <script id="editor" name="goodsinfo" type="text/plain" style="height:500px;color:red;">
                                    
                                </script>
                            </div>
                        </div>


                        <script type="text/javascript">
                            var ue = UE.getEditor('editor');
                            SyntaxHighlighter.all();
                        </script>

                       
                        <div class="am-form-group">
                            <div class="am-u-sm-9 am-u-sm-push-3">
                                <button class="am-btn am-btn-primary tpl-btn-bg-color-success ">
                                    提交
                                </button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>

{% endblock %}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值