Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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_Python 3.x_Django Forms_Django Templates_Django Views - Fatal编程技术网

Django 为什么';是否在重用模板时显示表单的字段?

Django 为什么';是否在重用模板时显示表单的字段?,django,python-3.x,django-forms,django-templates,django-views,Django,Python 3.x,Django Forms,Django Templates,Django Views,早上好,我是Django的新手,我正在尝试包含一个模板表单,但它不显示字段,只显示保存按钮。 使用Django 2.1。我总结了代码,你能帮我吗。因为您需要在其他模板中重用表单 models.py from django.db import models class Area(models.Model): nombre = models.CharField(max_length=45) descripcion = models.CharField(max_length=100,

早上好,我是Django的新手,我正在尝试包含一个模板表单,但它不显示字段,只显示保存按钮。 使用Django 2.1。我总结了代码,你能帮我吗。因为您需要在其他模板中重用表单

models.py

from django.db import models
class Area(models.Model):
    nombre = models.CharField(max_length=45)
    descripcion = models.CharField(max_length=100, null=True, blank=True)

    def __str__(self):
        return self.nombre
views.py

class AreaCreate(CreateView):
    model = Area
    form_class = AreaForm
    template_name = 'area/area_form.html'

class AreaList(ListView):
    model = Area
    template_name = 'area/area_list.html'
forms.py

class AreaForm(forms.ModelForm):
    class Meta:
        model = Area

        fields = (
                'nombre',
                'descripcion',
        )
        widgets = {
                'nombre': forms.TextInput(attrs={'class': 'form-control', 'placeholder':'Area'}),
                'descripcion': forms.TextInput(attrs={'class': 'form-control', 'placeholder':'Descripción'}),
        }
area_form.html

<form action="" method="POST"> {% csrf_token %}
   <div class="form-row">
     <div class="col-sm-4 campoform">
     {{ form.nombre }}
     </div>
     <div class="col-sm-6 campoform">
     {{ form.descripcion }}
     </div>
     <div class="col-sm-2 campoform">
     <button class="btn btn-primary" type="submit" style="width:100%">Guardar</button>
     </div>
  </div>
</form>
{%csrf\u令牌%}
{{form.nombre}}
{{form.descripion}}
瓜达尔
area_list.html---为了更好地理解,我没有添加完整的list.html代码

<div>{% include "area/area_form.html" %}</div>
{%include“area/area_form.html”%}

area_list.html中的结果是它只显示按钮。

很抱歉延迟响应。我通过调用带有模态的表单解决了这个问题。使用库“bootstrap\u model\u forms”

#查看
类GestionalAreas(generic.ListView):
模型=面积
上下文\对象\名称='区域'
模板名称='areas/gestiator\u areas.html'
分页单位=10
类CrearArea(generic.CreateView):
模板名称='areas/crear\u area.html'
form_class=AreaForm
success\u url=reverse\u lazy('gestior\u area'))
#网址
路径(“”,需要登录(views.gestiatorareas.as\u view()),name='gestiator\u areas'),
路径('crear/',需要登录(views.crearea.as_view()),name='crear_area'),
#HTML
克里尔区
#剧本
//博顿克雷尔区
$(“.crear area”).modalForm({formURL:{%url'crear_area'%}),successURL:“});
//博顿扎尔地区
$(“.editar区域”)。每个(函数(){
$(this.modalForm({formURL:$(this.data('id'),successURL:“});
});

为什么要这样做?您已经包含了模板,但尚未将表单添加到上下文中。表单仅由AreaCreate视图发送。@Rildoy这是一个基于类的视图,因此,如果定义了表单类,则表单在模板中可用。我用我的一个CreateView检查了所有内容,并显示了字段。那些自定义css类呢?谢谢你的评论。在模板的URL中-area_form.html-如果显示表单,问题是将其包含在另一个模板中,正如我读到的,当使用createview时,不再需要使用上下文,或者如果?@Rildoy ListView不会显示表单,除非将其添加到上下文中。例如,看到这样的东西,非常感谢@UrošTrstenjak。你的例子很好。谢谢你,丹尼尔罗斯曼。
 #View
class GestionarAreas(generic.ListView):
        model = Area
        context_object_name = 'areas'
        template_name = 'areas/gestionar_areas.html'
        paginate_by = 10  

class CrearArea(generic.CreateView):
        template_name = 'areas/crear_area.html'
        form_class = AreaForm
        success_url = reverse_lazy('gestionar_areas')

#urls
path('', login_required(views.GestionarAreas.as_view()),name='gestionar_areas'),
path('crear/', login_required(views.CrearArea.as_view()), name='crear_area'),

#HTML
<div class="col-sm-auto">
    <button class="crear-area btn btn-primary" type="button"name="button">
    <span class="fa fa-plus mr-2"></span>Crear Area</button>
</div>

#Script
// Boton Crear Area
 $(".crear-area").modalForm({formURL: "{% url 'crear_area' %}", successURL: ""});

// Boton Actualizar Area
 $(".editar-area").each(function () {
        $(this).modalForm({formURL: $(this).data('id'), successURL: ""});
      });