请求属性

时间:2019-07-07 15:53:55

标签: python django django-forms

我有一个页面,有3种类型的按钮(苹果,香蕉,橙色),通过单击第一个按钮,出现一个表格来获取信息。第一个按钮应该将信息发送到苹果模型,香蕉按钮应该将信息发送到香蕉模型,然后变成橙色!

这是我的模型。py:

from django.db import models

class Apple(models.Model):
    first_name = models.CharField(max_length=100)

class Banana(models.Model):
    first_name = models.CharField(max_length=100)

class Orange(models.Model):
    first_name = models.CharField(max_length=100)

我的表格.py:

from django import forms

class Fruit(forms.Form):
   first_name = forms.CharField(max_length=100)

我的views.py:

def fruitForm(request):
    form = Fruit()
    if request.method == 'POST' & request.id == 'apple':
          form = Fruit(request.POST)
          if form.is_valid():
                  Apple.objects.create(**form.cleaned_data)
     elif request.method =='POST' & request.id =='orange':
          form = Fruit(request.POST)
          if form.is_valid():
                  Orange.objects.create(**form.cleaned_data)
     elif request.method =='POST' & request.id =='banana':
          form = Fruit(request.POST)
          if form.is_valid():
                  Banana.objects.create(**form.cleaned_data)
     return render(request, 'main/home.html', {'form':form})

我的home.html:

<button class='btn btn-primary' data-target='#orange'> Add </button>
<form action=# method="POST" id = "orange">
 {% csrf_token %}
 {{ form.as_p }}
</form>

好吧,当我尝试转到主页(按钮所在的位置)时,出现此错误: “ WSGIRequest”对象没有属性“ id”。 请求没有id属性,对不对?那么,如何获取特定数据以保存在相对模型中?

2 个答案:

答案 0 :(得分:0)

您可以在提交输入中添加name,该值是按钮的文本内容,因此不能真正用于此

<form>
<input type="submit" class="btn btn-primary" name="orange" value="Add">
<input type="submit" class="btn btn-primary" name="apple" value="Add">
</form>

此值将成为发布数据中的键之一

if 'orange' in request.POST:
    pass
elif 'apple' in request.POST:
    pass

答案 1 :(得分:0)

webView.loadUrl("file:///android_asset/index.html"); 请求正文的属性来自表单输入的POST属性。因此,如果要保持视图功能不变,一种解决方法是在每个表单中添加一个隐藏字段,以区分应更新的模型:

name

对于其他两种形式也是如此。

(这不是解决此问题的唯一方法。例如,您可以在URL中包含一个变量,该变量指定要使用的模型。然后可以在视图函数中检查其值。这需要一点点不过,还有更多工作要做,包括更改您的<form action=# method="POST" id = "orange"> {% csrf_token %} <input type="hidden" name="id" value="orange" /> {{ form.as_p }} </form> 。)