Django ClearableInputField in form doesn't render in HTML
<p>I'm working on a web app that has photo upload functionality. I created a ModelForm to gather minimal user info plus a photo, and when I render it in HTML as <code>{{ form.as_p }}</code>, the field that allows the user to upload an image shows up just fine. The problem is, the form doesn't look good.</p>

<p>I need to be able to manually render the form in order to make it look better. I have written the HTML for this, and everything looks right except for the ImageFileField. Only the label gets rendered, not the upload button, checkbox to clear the file, etc.</p>

<p><strong>What do I need to do to get the ImageFileField from the ModelForm to render correctly in my custom HTML?</strong> I've looked at the Django docs up and down, looked here on SO and can't find anyone else who's had this issue. Many thanks in advance!</p>

<p><a href="https://i.stack.imgur.com/uSCQj.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/uSCQj.jpg" alt="Manually rendered HTML for ModelForm"></a></p>

<p><strong>forms.py snippet</strong></p>

<pre><code>class PostForm(forms.ModelForm):

    class Meta:
        model = Items
        fields = ('title', 'description', 'image_file')
</code></pre>

<p><strong>new_item.html snippet</strong></p>

<pre><code>&lt;form enctype="multipart/form-data" method="post" action="" class="post-form"&gt;

    {% csrf_token %}

    {{ form.non_field_errors }}

    &lt;div class="fieldWrapper"&gt;
        {{ form.title.errors }}
        &lt;label for="{{ form.title.id_for_label }}"&gt;Title:&lt;/label&gt;&lt;br&gt;
        {{ form.title }}
    &lt;/div&gt;&lt;br&gt;

    &lt;div class="fieldWrapper"&gt;
        {{ form.description.errors }}
        &lt;label for="{{ form.description.id_for_label }}"&gt;Description:    &lt;/label&gt;&lt;br&gt;
        {{ form.description }}
    &lt;/div&gt;&lt;br&gt;

    &lt;div class="fieldWrapper"&gt;
        {{ form.image_field.errors }}
        &lt;label for="{{ form.image_field.id_for_label }}"&gt;Image (optional):&lt;/label&gt;&lt;br&gt;
        {{ form.image_field }}
    &lt;/div&gt;

    &lt;button type="submit" class="save btn btn-default"&gt;Save&lt;/button&gt;

&lt;/form&gt;
</code></pre>

<p><strong>models.py snippet</strong></p>

<pre><code>class Items(models.Model):

    title = models.CharField(max_length=1000, null=False)
    description = models.TextField(max_length=1000, null=False)
    image_file = models.ImageField(max_length=1000,
                                   blank=True,
                                   default='',
                                   null=True,
                                   upload_to='item_photos')
</code></pre>