【发布时间】:2018-01-28 18:46:04
【问题描述】:
我似乎无法在我的模板中加载模型表单。
models.py
from django.db import models
class Event(models.Model):
name = models.CharField(max_length=60)
start_datetime = models.DateTimeField()
end_datetime = models.DateTimeField()
description = models.TextField()
forms.py
from django import forms
from .models import Event
class EventForm(forms.ModelForm):
class Meta:
model = Event
fields = ['name']
views.py
from django.shortcuts import render
from .forms import EventForm
def index(request):
if request.method == 'POST':
form = EventForm(request.POST)
if form.is_valid():
form.save()
else:
form = EventForm()
return render(request, 'index.html')
index.html
<form method="POST" action="">
{% csrf_token %}
{{ form.as_p }}
</form>
<button type="submit">Save</button>
在 GET 请求的 views.py 中添加 print(form) 时,我可以让表单在加载时打印到控制台,但它不会加载到模板中。
【问题讨论】:
-
渲染方法您正在发送未定义的事件。也没有使用 form =EventForm。
-
为了强化 Vikash 的观点,您需要将
form传递给模板的上下文(在render中),以便在模板中可用。如果您使用基于类的视图,这将通过指定表单类自动完成。 -
嗯,有道理。所以我的渲染函数应该是 render(request, 'index.html', {'form': form})?
-
你没有定义
events为什么你的代码可以正常工作? -
@LukePhillip 试试看。