我正在通过制作一个简单的应用程序来练习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没有打印在页面上
2条答案
按热度按时间50few1ms1#
get_or_create将成功创建对象。但是它返回一个元组而不是object。它将返回(object,isCreated),其中object是新创建或更新的对象,isCreated将根据对象是否是新创建的返回True或False。
所以像这样修改代码
bvhaajcl2#
您必须将其保存到数据库中,而不是赋值给变量