django对象是不获取创建后,通过形式发布数据

35g0bw71  于 2023-03-04  发布在  Go
关注(0)|答案(2)|浏览(123)

我正在通过制作一个简单的应用程序来练习django。所以,我面临着一个问题,那就是如何将一个对象赋给一个变量(抱歉,我不知道如何用文字来写这个)。首先,我以html格式取值,然后将其传递给一个视图,在那里我将所有这些值赋给一个模型的对象变量。代码如下:-www.example.comView.py

from django.shortcuts import render
from .models import Customer,Order
from pizza.models import item

def order(request):
    customer = Customer.objects.all()
    items=item.objects.all()

    context={'customer':customer,'items':items}
    return render(request,'pizza/order.html',context)
def profile(request):
    if request.method=='POST':
        cusname_=request.POST['cusname']
        cusphone_=request.POST['cusphone']
        cusaddress_=request.POST['cusaddress']

  cus=Customer.objects.get_or_create(cus_name=cusname_,cus_phone=cusphone_,cus_address=cusaddress_)
        item_list=request.POST.getlist('check')

        context={'cus':cus}

        return render(request, 'pizza/profile.html', context)

Html:-
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>order time</h1>
<form method="post" action=" {% url "profile" %}">
    {% csrf_token %}

    <label for="name">Customer Name</label>
    <input type="text" name="cusname" id="name"  placeholder="enter name">
    <label for="phone">phone</label>
    <input type="text" name="cusphone" id="phone"  placeholder="enter phone">
    <label for="address">address</label>
    <input type="text" name="cusaddress" id="address"  placeholder="enter address"><br>

    {% for item in items %}
        <input type="checkbox" name="check" id="item{{ item.id }}" value="{{ item.item_name }}">
        <label for="item{{ item.id }}">{{ item.item_name }}={{ item.item_price }}</label>
    {% endfor %}

    <input type="submit" placeholder="submit">
</form>

</body>
</html>

正如你所看到的,我在剖面图中声明了一个对象变量"cus",但是它没有被声明。就好像我把cus作为上下文传递到另一个模板中使用一样,我不能在那里使用它。
请帮帮忙

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>profile</p>

<p>{{ cus.cus_name }}</p>

</body>
</html>

这里cus. cus_name没有打印在页面上

50few1ms

50few1ms1#

get_or_create将成功创建对象。但是它返回一个元组而不是object。它将返回(object,isCreated),其中object是新创建或更新的对象,isCreated将根据对象是否是新创建的返回True或False。
所以像这样修改代码

cus, isCreated =Customer.objects.get_or_create(cus_name=cusname_,cus_phone=cusphone_,cus_address=cusaddress_)
bvhaajcl

bvhaajcl2#

您必须将其保存到数据库中,而不是赋值给变量

Customer(cus_name=cusname_,cus_phone=cusphone_,cus_address=cusaddress_).save()

相关问题