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')