Использование чистых HTML форм в Django представлениях - PullRequest
0 голосов
/ 12 января 2020

ТАК Я пытаюсь создать сайт Django с использованием форм HTML. Форма принимает выбор поставщика и его количество, которое затем необходимо передать в представления. Баланс таблицы сотрудников должен быть обновлен, при этом выплаченная сумма вычитается из баланса текущего вошедшего в систему пользователя, и необходимо добавить запись в таблицу транзакций с указанием подробностей, с кредитом = 0, остальная информация берется из формы. Как это можно сделать?

Ниже приведены мои файлы: html:

<form method="POST" action="/profiles/updatingBalance">
    <div class="custom-control custom-radio">
        <input type="radio" class="custom-control-input" value="1" id="defaultUnchecked" name="defaultRadios">
        <label class="custom-control-label" for="defaultUnchecked">Vendor 1</label>
    </div>
    <div class="custom-control custom-radio">
        <input type="radio" class="custom-control-input" value="2" id="defaultUnchecked" name="defaultRadios">
        <label class="custom-control-label" for="defaultUnchecked">Vendor 2</label>
    </div>  
    <input type="" class="form-control" id="amount1" name="amt" aria-describedby="emailHelp" placeholder="Enter amount">
    <br>
    <button type="submit" class="btn btn-primary">Submit</button>

</form>

Models.py:

from django.db import models
from django.contrib.auth.models import User
import django
import datetime
# Create your models here.

class vendor(models.Model):
    id = models.CharField(max_length=20, on_delete=models.CASCADE, primary_key=True)
    name = models.CharField(maxlength=30, on_delete=models.CASCADE)

class employee(models.Model):
    name = models.OneToOneField(User, on_delete=models.CASCADE)
    id = models.CharField(max_length=20, on_delete=models.CASCADE, primary_key=True)
    balance = models.IntegerField(default=0)

class transaction(models.Model):
    vendor_id = models.ForeignKey(vendor, on_delete=models.CASCADE)
    emp_id = models.ForeignKey(employee, on_delete=models.CASCADE)
    debit = models.IntegerField()
    credit = models.IntegerField()
    timestamp = models.DateField(_("Date"), default=datetime.date.today)

Вот views.py I пытался. Я получил до обновления баланса таблицы emplyee (не уверен, что это правильно):

def updatingBalance(request):
if request.method=="POST":
    ven_id = request.POST["defaultRadios"]
    amount = request.POST["amt"]
    x = employee.objects.filter(id = request.User.id)
    x.balance = x.balance - amount
    p = transaction(vendor_id =ven_id.value, emp_id = request.User.id, debit=amount, credit=0)
    p.save()
    return render(request, 'profiles/userLogin.html', employee)
return HttpResponseRedirect(request.META.get('profiles/userLogin.html'))

Я не уверен, как данные могут быть взяты из чистых html форм (я новичок), и как эта информация может быть использована для получения желаемых результатов. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 12 января 2020

, чтобы получить данные из формы, вы должны передать представление, которое будет обрабатывать информацию в атрибуте действия формы, затем с помощью словаря request.POST вы можете извлечь нужные данные.

html:

<form method="POST" action="/Yourapp/theview/">
    your html
</form>

просмотров:

def theview(request):
  amount=request.POST["amt"]

...