Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.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/2/django/20.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
Python Django ModelForm未显示在模板中_Python_Django - Fatal编程技术网

Python Django ModelForm未显示在模板中

Python Django ModelForm未显示在模板中,python,django,Python,Django,我试图创建一个表单,使用户能够通过引导模式在产品缺货时输入电子邮件 但是,表单{{form.as_p}}没有显示在模板上(参见下图) 此外,我不知道如何传入Product.id和Product.name,以便在用户单击Django Admin端的submit时,它与电子邮件一起可见 models.py class ReminderEmail(models.Model): product = models.ForeignKey(Product, on_delete=models.SET_

我试图创建一个表单,使用户能够通过引导模式在产品缺货时输入电子邮件

但是,表单{{form.as_p}}没有显示在模板上(参见下图)

此外,我不知道如何传入Product.id和Product.name,以便在用户单击Django Admin端的submit时,它与电子邮件一起可见

models.py

class ReminderEmail(models.Model):
    product = models.ForeignKey(Product, on_delete=models.SET_NULL, blank=True, null=True)
    date_added = models.DateTimeField(auto_now_add=True)
    remindemail = models.CharField(max_length=200, null=True)

    def __str__(self):
        return self.email

forms.py

from django import forms

from .models import ReminderEmail

class EmailForm(forms.ModelForm):
    class Meta:
        model = ReminderEmail
        fields = [
            'remindemail'
        ]
views.py

from django.shortcuts import render

from django.http import JsonResponse
import json
import datetime

from .models import *
from .forms import *

def email_remind_view(request):
    form = EmailForm(request.POST or None)
    if form.is_valid():
        form.save()
    
    context = {
        'form' : form
    }

    return render(request, "store.html", context)
store.html

<div id="stockModal" class="modal fade" role="dialog">
    <div class="modal-dialog modal-dialog-centered">
        <!-- Modal content-->
        <div class="modal-content">
            <form>
                <div id="modalheader" class="modal-header">
                    <h5 class="modal-title" id="exampleModalLongTitle">This product is Out of Stock</h5>
                </div>
                <div id="modalbody" class="modal-body">
                    <p>Enter your email to be reminded whenever this product goes back in stock.</p>
                </div>
                <div class="modal-footer">
                    <!-- <input required class="form-control" type="text" name="name" placeholder="Name.."> -->
                    {{ form.as_p }}
                    <input id="submitEmail" class="btn btn-success btn-block" type="submit" value="Submit Email">
                </div>

            </form>

        </div>
    </div>
</div>

<div class="row">

    {% for product in products %}
    <div class="col-lg-4">
        <img class="thumbnail" src="{{product.image.url}}">
        <div class="box-element product">
            <h6><strong>{{product.name}}</strong></h6>
            <h7>{{product.quantity}} left</h7>
            <!-- <h7 class="hidden" id="out-of-stock">Notify When Available</h7> -->
            <div id="content"></div>
            <hr>
            <button id="ATC" data-product={{product.id}} data-action="add"
                class="btn btn-outline-secondary add-btn update-cart">Add to Cart</button>
            <button id="Remind" data-product={{product.id}} class="btn btn-outline-secondary add-btn hidden">Notify Me
                When
                Available</button>
            <!-- <a class="btn btn-outline-success" href="#">View</a> -->
            <h4 id="price" style="display: inline-block; float: right">${{product.price|floatformat:2}}</h4>
        </div>
    </div>
    {% endfor %}
</div>
<form method="POST"></form>
    {% csrf_token %}
    {{ form.as_p }}
    <input id="submitEmail" type="submit" value="Submit Email">
</form>
在store.html中测试代码

<div id="stockModal" class="modal fade" role="dialog">
    <div class="modal-dialog modal-dialog-centered">
        <!-- Modal content-->
        <div class="modal-content">
            <form>
                <div id="modalheader" class="modal-header">
                    <h5 class="modal-title" id="exampleModalLongTitle">This product is Out of Stock</h5>
                </div>
                <div id="modalbody" class="modal-body">
                    <p>Enter your email to be reminded whenever this product goes back in stock.</p>
                </div>
                <div class="modal-footer">
                    <!-- <input required class="form-control" type="text" name="name" placeholder="Name.."> -->
                    {{ form.as_p }}
                    <input id="submitEmail" class="btn btn-success btn-block" type="submit" value="Submit Email">
                </div>

            </form>

        </div>
    </div>
</div>

<div class="row">

    {% for product in products %}
    <div class="col-lg-4">
        <img class="thumbnail" src="{{product.image.url}}">
        <div class="box-element product">
            <h6><strong>{{product.name}}</strong></h6>
            <h7>{{product.quantity}} left</h7>
            <!-- <h7 class="hidden" id="out-of-stock">Notify When Available</h7> -->
            <div id="content"></div>
            <hr>
            <button id="ATC" data-product={{product.id}} data-action="add"
                class="btn btn-outline-secondary add-btn update-cart">Add to Cart</button>
            <button id="Remind" data-product={{product.id}} class="btn btn-outline-secondary add-btn hidden">Notify Me
                When
                Available</button>
            <!-- <a class="btn btn-outline-success" href="#">View</a> -->
            <h4 id="price" style="display: inline-block; float: right">${{product.price|floatformat:2}}</h4>
        </div>
    </div>
    {% endfor %}
</div>
<form method="POST"></form>
    {% csrf_token %}
    {{ form.as_p }}
    <input id="submitEmail" type="submit" value="Submit Email">
</form>

{%csrf_令牌%}
{{form.as_p}}
感谢您的帮助

  • forms.py
    中,缺少导入
    模型
  • 如果您想传递
    Product.id
    Product.name
    ,则需要在
    forms.py
    中声明它们,并将它们隐藏在html模板中:

  • 谢谢你的回答,但这并不能解决我的问题,输入字段仍然没有出现在模板上。我遗漏了什么吗?我想你遗漏了表单的
    method='post'
    csrf\u token
    。你检查了css或js吗?也许父div会隐藏它。我在{{form}之前添加了{%csrf_token%},但它仍然不起作用。还检查了CSS,似乎没有任何东西隐藏它…您在创建或更新它之后是否运行了
    python manage.py makemigrations
    python manage.py migrate
    模型?
    from django import forms
    
    class EmailForm(forms.ModelForm):
        class Meta:
            model = ReminderEmail
            fields = ('remindemail', 'product',)
            widgets = {
                 'product': forms.HiddenInput()
            }