无法查看在管理面板上上传的图像

时间:2020-03-14 10:57:18

标签: python django django-models django-forms django-views

图片在django管理面板上上传,但是当我单击面板上的图像时,它显示页面未找到错误。

forms.py

class ApproveImgForm(forms.ModelForm):

    class Meta:
        model = ApprovImg
        fields = ['photo']

urls.py

path('w_p.html', views.WProduct_list, name='WProduct_list'),

views.py

def WProduct_list(request, category_slug=None):

    category = None
    categories = Category.objects.all()
    wproducts = Product.objects.filter()

    if category_slug:
        category = get_object_or_404(Category, slug=category_slug)
        wproducts = Product.objects.filter()

    if(request.method=='POST'):
        form = ApproveImgForm(request.POST, request.FILES)
        form.save()

    context = {
        'category': category,
        'categories': categories,
        'wproducts': wproducts,
    }
    return render(request, 'shop/w_p.html', context)

models.py

class ApprovImg(models.Model):
    photo=models.ImageField(upload_to='products/%Y/%m/%d')

    def __str__(self):
        return str(self.photo)

w_p.html

  <tr>
    <td><a href="{{ product.get_absolute_url }}">{{ product.name }}</a></td>
    <td> {{ product.price }}</td>
    <td><form action="w_p.html" method="post" enctype="multipart/form-data">
    {% csrf_token %} 

                    <input type="file" name="fileToUpload" id="fileToUpload">
                    <input type="submit">
                  </form>
                </td>
  </tr

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您应该继承ModelForm。

class ApproveImgForm(forms.ModelForm):

class Meta:
    model = ApprovImg
    fields = "__all__"  # not recommended, you should specify the fields.

# views.py

def upload_file(request):
    if request.method == 'POST':
        form = ApproveImgForm(request.POST, request.FILES)
        if form.is_valid():
            # file is saved
            form.save()
            return HttpResponseRedirect('/home/')
    else:
        form = ApproveImgForm
    return render(request, 'upload_image.html', {'form': form})

# urls.py
urlpatterns = [path('upload', upload_file, name='upload')]

# upload_image.html
<form action="{% url 'upload' %}" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <p>{{ form.non_field_errors }}</p>
    <p>{{ form.photo.label_tag }} {{ form.photo.help_text }}</p>
    <p>
        {{ form.photo.errors }}
        {{ form.photo }}
    </p>
    <p><input type="submit" value="Upload" /></p>
</form>
相关问题