首页 > 解决方案 > 无法从 POST 表单中获取信息

问题描述

我是 Django 和 Web 开发的新手。我目前正在使用表单,但我似乎无法获取 POST 表单数据。

模型.py

class Car(models.Model):
    brand = models.CharField(max_length=20)
    transmission = models.CharField(max_length=20)
    number_plate = models.CharField(max_length=7)
    price = models.IntegerField()
    available = models.BooleanField(default=True)

视图.py

def car_detail_view(request):
form = BookCar()
obj = Car.objects.get(number_plate="1JZ3OG")
context = {
    'obj': obj,
    'form': form
}
return render(request, "car/car_detail.html", context)

def book_car(request):
    form = BuyCar(request.POST)
    if form.is_valid():
        instance = models.Car.objects.get(number_plate=request.POST.get('number_plate'))
        instance.available=False
        return redirect('../../')

表格.py

class BookCar(forms.ModelForm):

class Meta:
    model = Car
    fields = [
        'brand',
        'transmission',
        'number_plate',
        'price',
        'available'
    ]

car_detail.html

{% block content %}
<h1>{{ obj.brand }}</h1>
<p>{{ obj.number_plate }}</p>
<p>{{ obj.price }}</p>
<p>{{ obj.available }}</p>
<form class="form" action="." method="post">{% csrf_token %}
  <input type="hidden" value="{{obj.number_plate}}">
  <input type="submit" value="Book">
</form>
{% endblock %}

每次我单击表单中的 Book 按钮时, book_car 都没有从表单中获取 POST。我检查了教程,但我无法修复它。

标签: pythondjangopost

解决方案


在你看来尝试这样

def book_car(request):
if request.method == 'POST':
    field = request.POST.get('your-field-name')

同样在您的模板中,您应该这样做:

<form action="/your-name/" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">

更多信息: https ://docs.djangoproject.com/en/2.1/topics/forms/


推荐阅读