django多形式和文件字段

问题描述 投票:0回答:2

我目前在单个视图上使用多个差异表单。我可以填写表格但是当我提交其中一个表格时,我的表格似乎无效。我显示了request.POST(它包含我的所有信息)和我的表单(它包含我的信息,除了文件部分。)

你能解释一下如何纠正它吗?它可以链接到我的模型吗?

(我正在使用bootstrap 3到django)

我的看法 :

def view_addfiles(request):
try:
    print(request.POST)
except:
    {}
if request.method == 'POST' and 'search' in request.POST:
    print("recherche")
    recherche=searchbar(request.POST, prefix='search')
    if recherche.is_valid():
        print("recherche")
else : 
    recherche=searchbar(prefix='search')

if request.method == 'POST' and 'film' in request.POST:
    print("film")
    addfilm=Addfilms(request.POST,request.FILES, prefix='film')
    print(addfilm)
    if addfilm.is_valid():
        print("film")
        return redirect(view_accueil, inscription=3)

else :
    print("dfsd")
    addfilm=Addfilms(prefix='film')

if request.method == 'POST' and 'serie' in request.POST:
    print("serie")
    addserie=Addseries(request.POST,request.FILES, prefix='serie')
    if addserie.is_valid():
        print("serie")
        return redirect(view_accueil, inscription=3)
else : 
    addserie=Addseries(prefix='serie')


return render(request, 'menuAjout.html',locals())

我的HTML:

<form action="{% url "add_files" %}" method="post">
{% csrf_token %}
{{ recherche.as_p }}
<input type="submit" id="validation" name="search"/>
</form>
<div id="films">
{% load bootstrap3 %}
{% bootstrap_css %} 

<form action="{% url "add_files" %}" method="post">
    {% csrf_token %}
    {% bootstrap_form addfilm %}
    {% buttons %}
    <button type="submit" class="btn btn-primary" id="submitbutton" name="film" value="submit">
      {% bootstrap_icon "star" %} Ajouter
    </button>
  {% endbuttons %}
</form>
</div>
<div id="series">
<form action="{% url "add_files" %}" method="post">
    {% csrf_token %}
    {% bootstrap_form addserie %}
    {% buttons %}
    <button type="submit" class="btn btn-primary" id="submitbutton" name="serie">
      {% bootstrap_icon "star" %} Ajouter
    </button>
  {% endbuttons %}
</form>
</div>

我的表格:

class Addseries(forms.ModelForm):
    class Meta:
        model = series
        exclude = ('nbTelechargement','datedepot')

class Addfilms(forms.ModelForm):
    class Meta:
        model = series
        exclude = ('nbTelechargement','datedepot')

class searchbar(forms.Form):
    motclef=forms.CharField(max_length=15,widget=forms.TextInput(attrs={'placeholder': 'Search...','style':'background :#ededef url("/static/image/search.png") no-repeat;background-size: auto 90%;'}))
    categorie=forms.ChoiceField(choices=(('films', 'films'),
                                                  ('séries', 'séries'),
                                                  ('jeux', 'jeux'),
                                                  ('logiciels', 'logiciels'),
                                                  ('livres', 'livres'),
                                                  ('musiques', 'musiques')))
django
2个回答
0
投票

我看到几件事:

  1. 它不是Django问题,而是HTML问题:

当用户提交表单时,他/她仅提交表单。 Django只在request.POST收到一个表格发送的数据。

  1. 您的表单共享相同的字段名称。

Addseries.nbTelechargementAddfilms.nbTelechargement将在request.POST拥有相同的钥匙


0
投票

我只是忘了在我的表单balise中添加enctype =“multipart / form-data”。

我的要求.FILES因此而空了。

因此,我的表格无效。

© www.soinside.com 2019 - 2024. All rights reserved.