Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django中未验证表单_Django_Django Forms_Django Templates_Django Validation - Fatal编程技术网

在Django中未验证表单

在Django中未验证表单,django,django-forms,django-templates,django-validation,Django,Django Forms,Django Templates,Django Validation,我对Django表格有个奇怪的问题。在这个表单中,我可以根据单击提交按钮来完成不同的操作。在开发过程中的某个时刻,一切都很顺利:我的表单验证正常,而且它也正是我想要的。但是现在(我真的不知道我会做什么错事来打破它),提交操作根本不起作用。我没有收到任何错误,只是什么也没做 以下是my forms.py文件中的代码: class AssetModif(forms.Form): def __init__(self, *args, **kwargs): proj_id

我对Django表格有个奇怪的问题。在这个表单中,我可以根据单击提交按钮来完成不同的操作。在开发过程中的某个时刻,一切都很顺利:我的表单验证正常,而且它也正是我想要的。但是现在(我真的不知道我会做什么错事来打破它),提交操作根本不起作用。我没有收到任何错误,只是什么也没做

以下是my forms.py文件中的代码:

class AssetModif(forms.Form):    
    def __init__(self, *args, **kwargs):
        proj_id = kwargs.pop('proj_id')
        super(AssetModif, self).__init__(*args, **kwargs)
        self.proj_id = proj_id
        EPISODE_CHOICES = [('-1', '------------')]
        for e in Project.objects.filter(proj_id_parent=proj_id).order_by('proj_saison', 'proj_numepisode'):
            EPISODE_CHOICES.append((e.proj_name,
                "e" + str(e.proj_saison).zfill(2) + str(e.proj_numepisode).zfill(2) +
                "_" + e.proj_name))
            self.fields['episodes'].choices = EPISODE_CHOICES
            self.fields['episode_etat'].choices = EPISODE_CHOICES

    TYPE_CHOICES = [(type.type_name, type.type_name) for type in Type.objects.all()]
    ASSET_CHOICES = (('', '-- choisir un type en premier'))

    type = forms.ChoiceField(choices=TYPE_CHOICES,
                widget=forms.Select(attrs={'onchange':'get_asset_from_type();'}))
    asset = LazyChoiceField(choices=ASSET_CHOICES, required=False)
    episodes = forms.ChoiceField()

    etat = forms.CharField()
    episode_etat = forms.ChoiceField()

    commentaire = forms.CharField(widget=forms.Textarea)
加上一些save_action()方法,如果有人要求,我可以添加这些方法。my views.py中的代码:

def modif_asset(request):
    try:
        proj = request.session['proj']
        nom = request.session['nom']
    except:
        request.session['proj'] = 1
        proj = request.session['proj']
        request.session['nom'] = ""
        nom = ""

    if request.method == 'POST' and (request.POST.get("action_add_episode", "") == "Ajout Episode"):
        form = AssetModif(request.POST, proj_id = request.session['proj'])
        if form.is_valid():
            asset = form.save_episode()
            #return HttpResponseRedirect(reverse('menu'))
            return render_to_response("asset/modif.html", {'proj':proj, 'form':form, 'asset':asset}, context_instance=RequestContext(request))
        else:
            asset = form.save_episode()
            return render_to_response("asset/modif.html", {'proj':proj, 'form':form, 'asset':"toooooooo"}, context_instance=RequestContext(request))

    elif request.method == 'POST' and (request.POST.get("action_delete_asset", "") == "Suppression BDD"):
        form = AssetModif(request.POST, proj_id = request.session['proj'])
        if form.is_valid():
            asset = form.delete_asset()
            #return HttpResponseRedirect(reverse('menu'))
            return render_to_response("asset/modif.html", {'proj':proj, 'form':form, 'asset':asset}, context_instance=RequestContext(request))

    elif request.method == 'POST' and (request.POST.get("action_ajout_etat", "") == "Ajout Etat"):
        form = AssetModif(request.POST, proj_id = request.session['proj'])
        if form.is_valid():
            asset = form.save_etat()
            return render_to_response("asset/modif.html", {'proj':proj, 'form':form, 'asset':asset}, context_instance=RequestContext(request))

    elif request.method == 'POST' and (request.POST.get("action_ajout_comment", "") == "Ajout Commentaire"):
        form = AssetModif(request.POST, proj_id = request.session['proj'])
        if form.is_valid():
            asset = form.save_comment()
            return render_to_response("asset/modif.html", {'proj':proj, 'form':form, 'asset':asset}, context_instance=RequestContext(request))

    else:
        form = AssetModif(proj_id=request.session['proj'])

    c = {'proj': proj, 'form':form, 'asset':" Miiii "}
    c.update(csrf(request))
    return render_to_response("asset/modif.html", c, context_instance=RequestContext(request))
我的模板是这样的:

<form method="POST" action="" name="form_modif">{% csrf_token %}
  <table>
    <tr><td> Type </td><td> {{ form.type }} </td>
    <td> Asset </td><td> {{ form.asset }} </td></tr>
  </table>

  <div id="ajout_episode">
    <p><b> Premier &eacute;pisode de l'asset </b></p>
    <table>
      <tr><td>Episode</td><td> {{ form.episodes }}</td></tr>
      <tr><td><input type="submit" name="action_add_episode" value="Ajout Episode" /></td></tr>
    </table>
  </div>

  <div id="creation_etat">
    <p><b> Ajout d'un &eacute;tat </b></p>
    <table>
      <tr><td>Etat</td><td> {{ form.etat }}</td></tr>
      <tr><td>Premier &eacute;pisode de l'&eacute;tat</td><td> {{ form.episode_etat }}</td></tr>
      <tr><td><input type="submit" name="action_ajout_etat" value="Ajout Etat" /></td></tr>
    </table>
  </div>

  <div id="ajout_comment">
    <p><b> Ajout d'un commentaire </b></p>
    <table>
      <tr><td> {{ form.commentaire }}</td></tr>
      <tr><td> <input type="submit" name="action_ajout_comment" value="Ajout Commentaire" /></td></tr>
    </table>
  </div>

  <div id="suppression_bdd">
    <p><b> Suppression de l'asset en BDD </b></p>
    <input type="submit" onclick="return verifier();" name="action_delete_asset" value="Suppression BDD" />
</form>
{%csrf\u令牌%}
类型{form.Type}
资产{{form.Asset}}
总理与行政长官;资产皮索德酒店

插曲{form.scents} 阿约特·德恩和埃库特;塔特

Etat{{form.Etat} 总理与行政长官;皮索德·德·勒和埃库特;tat{{form.eposit_etat} 阿约特·德恩评论

{{form.commentaire}} 抑制资产负债表


我真的很感激任何帮助,因为我完全被它困住了

不是一个太多的答案,而是关于获得错误的指针

您的第一个起点应该是查找字段错误,因为您目前根本没有输出它们

所以如果你这样做了

    <div id="ajout_episode">
    <p><b> Premier &eacute;pisode de l'asset </b></p>
    <table>
    <tr><td>Episode</td><td> {{ form.episodes }}</td></tr>

    <tr><td><input type="submit" name="action_add_episode" value="Ajout Episode" /></td></tr>
    </table>
    {{form.episodes.errors}}
    </div>

总理与行政长官;资产皮索德酒店

插曲{form.scents} {{形式.情节.错误}
然后它将显示该字段的错误。 可以使用以下代码段检查错误:

表单也有全局错误变量,尽管目前找不到或记不清它的名称。


<form method="POST" action="url_to_your_view" name="form_modif">

它正以这种方式调用右视图。它在
if form.is\u valid()
else
语句中返回一些内容,因此它调用了正确的函数,而且,只是表单没有验证好,它在
else
语句中输出了一些内容。但如果表单正在验证,则数据为空。我试图输出self.cleaned_数据['asset'],但它什么也不返回你有调试工具吗?没有。你知道一个容易用的吗?这非常简单,只需导入pdb并键入pdb.set_trace(),您就可以在其中放置断点