crispy form 在template里不显示
Model.py
class Event(models.Model):
STATUS_CHOICES = (
('draft', 'Draft'),
('published', 'Published'),
)
title = models.CharField(max_length=70, null=True)
body = models.TextField(null=True)
created_time = models.DateTimeField(auto_now_add=True, null=True)
status = models.CharField(max_length=10, choices=STATUS_CHOICES, null=True)
abstract = models.CharField(
max_length=54, blank=True, null=True,
help_text="get the first 54 text",
)
views = models.PositiveIntegerField(default=0, null=True)
likes = models.PositiveIntegerField(default=0, null=True)
topped = models.BooleanField(default=False, null=True)
def __str__(self):
return self.title
class Meta:
ordering = ['-created_time']
forms.py
class Meta:
model = Event
fields = [
'title',
'body',
'status',
'abstract',
'topped',
]
views.py
def addeventform(self, request, *args, **kwargs):
"""A from to add new events"""
# allow template to pass in an empty form
event_form = EventForm()
# then save the form if method is post and form is valid
if request.method == 'POST':
event_form = EventForm(request.POST)
if event_form.is_valid():
event_form.save()
return redirect('addevent')
context = {
'event_form': event_form,
}
return render(request, 'comment/addevent.html', context)
template
<form method="POST" action="/addevent/" class="form mb-2" enctype="multipart/form-data">
{% csrf_token %}
{{ event_form|crispy }}
<p>testingp>
form>
无报错,就是无法显示form
def addeventformview(request):
# dictionary for initial data with
# field names as keys
context = {}
# add the dictionary during initialization
event_form = EventForm(request.POST or None)
if event_form.is_valid():
event_form.save()
context['event_form'] = event_form
return render(request, "comment/addevent.html", context)
谁能找到form不显示的解决办法?
如果没人的话,我来试试
你那content只有 event_form 我想知道你那个crispy是个啥哪里来的,你把它删了看能不能显示
可以试试
https://www.likecs.com/ask-2457760.html
def addeventform(self, request, *args, **kwargs):
"""A from to add new events"""
# allow template to pass in an empty form
event_form = EventForm()
# then save the form if method is post and form is valid
if request.method == 'POST':
event_form = EventForm(request.POST)
if event_form.is_valid():
event_form.save()
return redirect('addevent')
context = {
'event_form': event_form,
}
return render(request, 'comment/addevent.html', context)
最后一段代码应该是return render(request, 'comment/addevent.html', context=context)。
你也可以这样写:
def addeventform(self, request, *args, **kwargs):
"""A from to add new events"""
# allow template to pass in an empty form
event_form = EventForm()
# then save the form if method is post and form is valid
if request.method == 'POST':
event_form = EventForm(request.POST)
if event_form.is_valid():
event_form.save()
return redirect('addevent')
return render(request, 'comment/addevent.html', context = {'event_form': event_form,})
views.py对象参数返回不对,是context=context,jinjia2参数调用不对,是对象里的event_form呀,咋能直接调。修改如下,有帮助的话采纳一下哦!
views.py
def addeventform(self, request, *args, **kwargs):
"""A from to add new events"""
# allow template to pass in an empty form
event_form = EventForm()
# then save the form if method is post and form is valid
if request.method == 'POST':
event_form = EventForm(request.POST)
if event_form.is_valid():
event_form.save()
return redirect('addevent')
context = {
'event_form': event_form,
}
return render(request, 'comment/addevent.html', context=context)
template
<form method="POST" action="/addevent/" class="form mb-2" enctype="multipart/form-data">
{% csrf_token %}
{{ context.event_form }}
<p>testing</p>
</form>