0

我试图使用 Django 制作一个基本的银行系统,其中用户可以将钱转移给其他用户。但是当我尝试转账时没有任何反应,可能是因为views.py中的转账功能没有被执行。

这是来自views.py的transaction.html文件和传输函数:

交易.html

{% extends 'bank/base.html' %}

{% block content %}

  <div class="container">
    <h2>Transfer Money</h2>
    <form action="{% url 'transaction' %}"  method="post">
      {% csrf_token %}
      <label for="s_acc">Select sender details</label>
      <select  name="s_acc"  required>
        <option value="select">Select</option>
        {% for cust in customer %}
          <option value="{{cust.account_number}}">{{cust.name}}: {{cust.account_number}} : {{cust.balance}}</option>
        {% endfor %}

      </select>
      <br>

      <label for="amt">Enter amount</label>
      <input type="number" name="amt" required>
      <br>

      <label for="r_acc">Select receiver details</label>
      <select  name="r_acc" required>
        <option value="select">Select</option>
        {% for cust in customer %}
          <option value="{{cust.account_number}}">{{cust.name}}: {{cust.account_number}} : {{cust.balance}}</option>
        {% endfor %}

      </select>
      <br>

      <button type="submit" name="button">TRANSFER</button>

    </form>

  </div>

{% endblock %}

来自views.py的传递函数:

def Transfer(request):
    customer = Customer.objects.all();
    if request.method=="POST":
        s_acc = request.POST.get('s_acc')
        amt = request.POST.get('amt')
        r_acc = request.POST.get('r_acc')
        print(s_acc)
        print(amt)
        print(r_acc)
        amt = int(amt)

        if((s_acc=='select')or(amt=='select')or(r_acc=='select')or(s_acc==r_acc)):
            messages.warning(request,"Account not selected or both the accounts are same")
        elif(amt<=0):
            messages.warning(request,"Enter valid amount")
        else:
            for c in customer:
                if(c.account_number == s_acc):
                    s_name = c.name;
                    if(amt>c.balance):
                        messages.warning(request,"Insufficient balance")
                    break

        for x in customer:
            if(x.account_number == r_acc):
                r_name = x.name
                r_bal = x.balance
                break;

        for c in customer:
            if c.account_number == s_acc and r_acc!=s_acc and r_acc!= 'select' and amt<=c.balance and amt>0:
                q1 = Transaction(sender_name = s_name, amount = amt, receiver_name = r_name )
                q1.save()
                acc_bal = c.balance - amt
                q2 = Customer.objects.filter(account_number = s_acc).update(balance = acc_bal)
                q2.save()
                acc_bal = r_bal+amt
                q3 = Customer.objects.filter(account_number = r_acc).update(balance = acc_bal)
                q3.save()
                messages.success(request,"Transfer Complete")
                return redirect('tranfer_list')
    return render(request,'bank/transaction.html',{'customer':customer})

网址.py

from django.urls import path
from bank import views

urlpatterns = [
        path('',views.AboutView.as_view(),name = 'about' ),
        path('about/', views.AboutView.as_view(),name = 'about'),
        path('customers/', views.CustomerListView.as_view(),name = 'customer_list'),
        path('transfer_list/', views.TransactionListView.as_view(), name = 'transfer_list'),
        path('transaction/', views.Transfer, name = 'transaction'),
        path('customers/new', views.CustomerCreateView, name = 'customer_new'),

]

提前致谢 :)

4

0 回答 0