所以我试着在一个图像页面上设置一个复选框,如果我想让这个图像被认为是“个人资料图像”,我可以设置一个布尔值字段true/false。问题是表单域选项没有显示在模板中。有什么建议吗?
single_image.html
<form method='POST' action="{% url 'set_profile_image' plant_pk=plnt.pk image_pk=img.pk %}">
{% csrf_token %}
<hr>
{{ form.as_p }}
<hr>
<input type="submit" value="Submit">forms.py
class SetProfileImageForm(forms.ModelForm):
"""A form to set profile image."""
image_main = forms.BooleanField(required=True)
class Meta:
model = Image
fields = ["image_main","image_url",]views.py
class SingleImageView(DetailView):
""" A view to see a single image."""
template_name = "project/single_image.html"
queryset = Image.objects.all()
def get_context_data(self, **kwargs):
"""Return a dictionary with context data for this template to use."""
# get the default context data:
# this will include the Profile record for this page view
context = super(SingleImageView, self).get_context_data(**kwargs)
img = Image.objects.get(pk=self.kwargs['image_pk'])
plnt = Image.objects.get(pk=self.kwargs['image_pk']).plant
context['img'] = img
context['plnt'] = plnt
form = SetProfileImageForm()
context['set_profile_image'] = form
# return the context dictionary
return context
def get_object(self):
"""Returns the Note Object that should be deleted."""
# read the URL data values into variables
plant_pk = self.kwargs['plant_pk']
image_pk = self.kwargs['image_pk']
# find the StatusMessage object, and return it
return Image.objects.get(pk=image_pk)
def set_profile_image(request, plant_pk, image_pk):
"""A custom view function to set profile image."""
# find the plant for whom we are setting the image
plant = Plant.objects.get(pk=plant_pk)
if request.method == 'POST':
if "cancel" in request.POST:
return redirect('display_plant', pk=plant.pk)
form = SetProfileImageForm(request.POST or None, request.FILES or None)
if form.is_valid():
plant.set_profile_image(image_pk)
return redirect('display_plant', pk=plant.pk)
else:
print("Error: the form was not valid.")
else:
return reverse('gallery', kwargs={'pk':plant.pk})发布于 2020-10-16 03:58:27
您正在将form实例作为set_profile_img密钥发送到context.Change中,或者只是重命名上下文密钥。
...
context['form'] = form<form method='POST' action="{% url 'set_profile_image' plant_pk=plnt.pk image_pk=img.pk %}">
{% csrf_token %}
<hr>
{{ form.as_p }}
<hr>
<input type="submit" value="Submit">或
...
context['set_profile_image'] = form<form method='POST' action="{% url 'set_profile_image' plant_pk=plnt.pk image_pk=img.pk %}">
{% csrf_token %}
<hr>
{{ set_profile_image.as_p }}
<hr>
<input type="submit" value="Submit">https://stackoverflow.com/questions/64376009
复制相似问题