如何从静态页面获取值并将其发布到模型中

时间:2019-04-01 18:58:12

标签: python django

我已将“产品”模型中的值{{p.emri}}和{{p.cmimi}}显示在我的Browse.html上。到目前为止,还不错,但是现在我试图在views.py中编写一个函数来获取该值,然后在我按下Submit按钮时将它们发布到另一个名为“ AddToCart”的模型中。

我正在尝试编写views.py函数,在这里我想首先使用“ GET”方法获取值并将它们存储在变量中,然后使用“ POST”方法将这些变量保存到模型中“ AddToCart”

这是'Browse.html'文件,其中显示了来自模型“ Produkt”的值

namespace NAMESPACE_NAME {}

这是“产品”和“ AddToCart”模型

{% for p in produktet %}
  <div class="col-md-3 col-sm-12 col-xs-12 on-over" style="...">
    <img class..." src="{{ p.foto }}">
    <label class="label-ge">{{ p.emri }}</label>
    <p><label style="...">{{ p.cmimi }} LEK</label></p>
    <h4>Pershkrimi</h4>
    <p>{{ p.pershkrimi }}</p>
    <button class="btn..." style="...">Add to Cart</button>
  </div>
{% endfor %}

这是我要创建的视图函数

class Produkte(models.Model):
    emri = models.CharField(max_length=50)
    pershkrimi = models.CharField(max_length=500)
    cmimi = models.IntegerField()
    foto = models.CharField(max_length=500)
    kategori = models.ForeignKey(Kategorite, on_delete = models.DO_NOTHING)

def __str__(self):
    return self.emri

class AddToCart(models.Model):
    id = models.AutoField(primary_key=True, unique=True)
    id_product = models.ForeignKey(Produkte, on_delete = models.DO_NOTHING)
    quantity = models.IntegerField()
    id_user = models.ForeignKey(User, on_delete = models.DO_NOTHING)
    orderd = models.BooleanField(default=False)

@property
def cmimi_total(self):
return self.quantity * self.id_product.cmimi

我想获得与p.emri和p.cmimi相同的值并将它们存储到AddToCart模型中,之后我必须获取存储的值并将它们显示到另一个静态文件中,但是我可以解决这一问题。谢谢!

1 个答案:

答案 0 :(得分:0)

您无法从GET请求访问变量,需要POST请求。您可以将页面上的添加到卡片元素用作表单提交按钮。您提交的表单可以包含您需要作为隐藏输入的变量值。例如:

<form method="post" action="your/add/to/cart/url/">
    {% csrf_token %}
    <input type="hidden" name="p.emri" value="{{ p.emri }}">
    <input type="hidden" name="p.cmimi" value="{{ p.cmimi }}">

等等。

然后,在您的视图中,您可以从POST请求中访问这些值并更新您的模型实例:

def buy_now(request):
    if request.method == 'POST':
        price = browse(request.POST['p.cmimi'])
        emri = browse(request.POST['p.emri'])

每当需要更新任何内容时,都应始终发布数据。