首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django表单域不显示

Django表单域不显示
EN

Stack Overflow用户
提问于 2020-10-16 00:32:29
回答 1查看 57关注 0票数 0

所以我试着在一个图像页面上设置一个复选框,如果我想让这个图像被认为是“个人资料图像”,我可以设置一个布尔值字段true/false。问题是表单域选项没有显示在模板中。有什么建议吗?

single_image.html

代码语言:javascript
运行
复制
<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

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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})
EN

Stack Overflow用户

发布于 2020-10-16 03:58:27

您正在将form实例作为set_profile_img密钥发送到context.Change中,或者只是重命名上下文密钥。

代码语言:javascript
运行
复制
...
context['form'] = form
代码语言:javascript
运行
复制
<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">

代码语言:javascript
运行
复制
...
context['set_profile_image'] = form
代码语言:javascript
运行
复制
<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">
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64376009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档