TypeError receive_money() 正好需要 3 个参数(给定 1 个)-Django
TypeError receive_money() takes exactly 3 arguments (1 given)-Django
我正在尝试将 2 个参数传递给视图,但它给出了此类型错误
我不知道是网址问题还是我的重定向问题
//urls.py
urlpatterns = [
#
url(r'^receive/[a-zA-Z]+/[0-9]+/$', receive_money)
]
//subtract_money 查看
def subtract_money(request):
if request.user:
users = User.objects.all()
users_ids = users.values_list('id', flat=True)
users_list = []
for id in users_ids:
user = users.get(pk=id)
if user.username != "ravinkohli" and user.username != request.user.username:
users_list.append(user)
if request.POST and request.POST.get('amount'):
username = request.user.username
withdraw = request.POST.get('amount')
wallet = Wallet.objects.get(pk=request.user.userprofile.wallet_id_id)
# if withdraw > wallet.amount:
# return render(request, 'send_money.html', {'error': 'Amount can not be greater than balance','users': users_list})
wallet.subtract_money(withdraw)
wallet.save()
now = datetime.now()
trans = Transaction(from_name=username, wallet_id=wallet,to=request.POST.get('receiver'), date=now, amount=withdraw)
trans.save()
return redirect('/receive/%s/%s/' % (request.POST.get('receiver'), withdraw))
else:
return render(request, 'send_money.html',{'users': users_list})
else:
return HttpResponseRedirect('/login/?next={}'.format('/subtract_money/'))
//接收方视图
def receive_money(request, username, amount):
add_amount = amount
wallet = Wallet.objects.get(username=username)
wallet.add_money(add_amount)
wallet.save()
return redirect('user_profile.html', {'user': request.user,'userprofile': Userprofile.objects.get(user=request.user), 'wallet': wallet})
因为您需要 2 个参数,所以应该是
url(r'^receive/(?P<username>[a-zA-Z]+)/(?P<amount>[0-9]+)/$', receive_money)
尝试使用以下 url,但我认为构建这样的 url 不是个好主意。
urlpatterns = [
#
url(r'^receive/(?P<username>[a-zA-Z]+)/(?P<amount>[0-9]+)/$', receive_money)
]
我正在尝试将 2 个参数传递给视图,但它给出了此类型错误 我不知道是网址问题还是我的重定向问题
//urls.py
urlpatterns = [
#
url(r'^receive/[a-zA-Z]+/[0-9]+/$', receive_money)
]
//subtract_money 查看
def subtract_money(request):
if request.user:
users = User.objects.all()
users_ids = users.values_list('id', flat=True)
users_list = []
for id in users_ids:
user = users.get(pk=id)
if user.username != "ravinkohli" and user.username != request.user.username:
users_list.append(user)
if request.POST and request.POST.get('amount'):
username = request.user.username
withdraw = request.POST.get('amount')
wallet = Wallet.objects.get(pk=request.user.userprofile.wallet_id_id)
# if withdraw > wallet.amount:
# return render(request, 'send_money.html', {'error': 'Amount can not be greater than balance','users': users_list})
wallet.subtract_money(withdraw)
wallet.save()
now = datetime.now()
trans = Transaction(from_name=username, wallet_id=wallet,to=request.POST.get('receiver'), date=now, amount=withdraw)
trans.save()
return redirect('/receive/%s/%s/' % (request.POST.get('receiver'), withdraw))
else:
return render(request, 'send_money.html',{'users': users_list})
else:
return HttpResponseRedirect('/login/?next={}'.format('/subtract_money/'))
//接收方视图
def receive_money(request, username, amount):
add_amount = amount
wallet = Wallet.objects.get(username=username)
wallet.add_money(add_amount)
wallet.save()
return redirect('user_profile.html', {'user': request.user,'userprofile': Userprofile.objects.get(user=request.user), 'wallet': wallet})
因为您需要 2 个参数,所以应该是
url(r'^receive/(?P<username>[a-zA-Z]+)/(?P<amount>[0-9]+)/$', receive_money)
尝试使用以下 url,但我认为构建这样的 url 不是个好主意。
urlpatterns = [
#
url(r'^receive/(?P<username>[a-zA-Z]+)/(?P<amount>[0-9]+)/$', receive_money)
]