Django 处理类型错误:不支持从非类型转换为十进制
我试图从我的模板中获取输入的金额到我的视图中,以便根据该金额计算从一种货币到另一种货币的每日汇率。但是,Django 处理类型错误:不支持从非类型转换为十进制,django,django-views,django-templates,Django,Django Views,Django Templates,我试图从我的模板中获取输入的金额到我的视图中,以便根据该金额计算从一种货币到另一种货币的每日汇率。但是,request.GET.GET('amount')方法似乎没有返回任何值,因为不支持从NoneType到Decimal的转换。 以下是我的观点: def Add_transfer(request, reference=None): amount = request.GET.get('montant') if request.method=="POST":
request.GET.GET('amount')
方法似乎没有返回任何值,因为不支持从NoneType到Decimal的转换。
以下是我的观点:
def Add_transfer(request, reference=None):
amount = request.GET.get('montant')
if request.method=="POST":
form = TransferAddFrom(request.POST,request.FILES)
if form.is_valid():
form.save()
id = form.instance.id
return redirect('details', id=id)
else:
form=TransferAddFrom()
# Get conversion rate from USD to USD
print(currencies.get_rate('USD','EUR'))
# Convert amount from USD to CNY
print(currencies.convert('USD','CNY',Decimal(amount)))
return render(request,
'indexOld.html',{'form':form})
TypeError at /
conversion from NoneType to Decimal is not supported
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 3.1.7
Exception Type: TypeError
Exception Value:
conversion from NoneType to Decimal is not supported
Exception Location: F:\MyProjects\Transfer\TransferApp\views.py, line 46, in Add_transfer
Python Executable: F:\MyProjects\Transfer\venv\Scripts\python.exe
Python Version: 3.7.2
Python Path:
['F:\\MyProjects\\Transfer',
'C:\\Users\\mt_te\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip',
'C:\\Users\\mt_te\\AppData\\Local\\Programs\\Python\\Python37\\DLLs',
'C:\\Users\\mt_te\\AppData\\Local\\Programs\\Python\\Python37\\lib',
'C:\\Users\\mt_te\\AppData\\Local\\Programs\\Python\\Python37',
'F:\\MyProjects\\Transfer\\venv',
'F:\\MyProjects\\Transfer\\venv\\lib\\site-packages']
Server time: Fri, 07 May 2021 03:07:19 +0000
这是模板的代码
<h1>FABRICE MONEY TRANSFER</h1>
<form class="form" action="." method="post" enctype="multipart/form-data">
{% csrf_token %}
<select name="choix_du_paiement_des_frais" id="choice-select" onchange="onsubmit()">
<option value="">----Selectionner la devise----</option>
<option value="USD">USD</option>
<option value="CNY">CNY</option>
</select>
<input type="text" name="expediteur" placeholder="Expéditeur" required="required" />
<input type="number" value="0.00" name="montant" placeholder="Montant"/>
<input type="text" name="receveur" placeholder="Bénéficiaire" required="required" />
<input type="text" name="telephone" placeholder="Téléphone du bénéficiaire" required="required" />
<select name="choix_du_paiement_des_frais" id="choice-select">
<option value="">--Déduisons nous les frais de transfert sur le montant à envoyer--</option>
<option value="Oui">Oui</option>
<option value="Non">Non</option>
</select>
<br>
<br>
<button type="submit" class="btn btn-primary btn-block btn-large">Valider</button>
</form>
FABRICE转账
{%csrf_令牌%}
----设计选择----
美元
人民币
--大使山上的交通费是多少--
是的
不
瓦利德
您正试图使用GET字典访问POST变量。更改以下内容
amount = request.GET.get('montant')
if request.method=="POST":
到
显然,当您第一次加载带有表单的页面时,这仍然会失败,因为您还没有发布任何内容。您也应该在
if
子句中移动Decimal()
初始化。请始终发布完整的错误消息并进行完整的回溯。@Selcuk,我添加了PleaseEyes您是对的。现在工作正常了。非常感谢。
if request.method=="POST":
amount = request.POST.get('montant')