Невозможно просмотреть загруженное изображение на панели администратора - PullRequest
0 голосов
/ 14 марта 2020

Изображение загружается на панель администрирования 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 Ответ

1 голос
/ 14 марта 2020

Вы должны наследовать от 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>
...