【问题标题】:how to delete an image using django?如何使用 django 删除图像?
【发布时间】:2013-04-05 02:34:09
【问题描述】:

我想知道如何在我的表单中添加删除按钮以删除图像。

该项目是一个简单的“图片查看器”,索引显示了所有存储的图像,但我想添加一个“x”图标来删除该特定图像。

这是我的代码。

views.py

from django.shortcuts import render, redirect
from gallery.forms import ImageForm
from gallery.models import Image

def index(request, image_form=None):
    image_form = image_form or ImageForm(request.POST, request.FILES)
    if request.method == 'POST':
        if image_form.is_valid():
            new_image = Image(image=request.FILES['image_file'])
            new_image.save()
    # obtenemos el listado de imagenes registradas
    images_list = Image.objects.all().order_by('-id')
    return render(request, 'index.html', {
        'image_form' : image_form,
        'images_list' : images_list,



    })

models.py

from django.db import models
from django.contrib import admin

class Image(models.Model):
    image = models.FileField(upload_to='static/gallery/%Y/%m/%d')

admin.site.register(Image)

forms.py

from django import forms

class ImageForm(forms.Form):
    image_file = forms.FileField(
        label='choose a file',
        help_text = 'Max 2 megabytes'
    )

index.html(显示图片列表)

<style>
    ul {list-style:none; width:800px;}
    ul li {float:left; margin:6px;}
</style>
<form action="./gallery" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <p> {{ image_form.non_field_errors }} </p>
    <p> {{ image_form.image_file.label_tag }} </p>
    <p> {{ image_form.image_file.help_text }} </p>
    <p>
        {{ image_form.image_file.errors }}

        {{ image_form.image_file }}
    </p>
    <p> <input type="submit" value="subir"> </p>
</form>

<h2>Im&aacute;genes</h2>
<ul>
{% for image in images_list %}
    <li>
        <img src="/{{ image.image }}" height="75" />
    </li>
{% endfor %}

</ul>

我想在 index.html 上添加删除图像的删除按钮:D

【问题讨论】:

    标签: python sql django


    【解决方案1】:

    urls.py

    [.........]
    url(
       r'^delete-image/(?P<id>\d+)/$', 
       'delete_image', 
       name="delete_image"
    ),
    [.........]
    

    views.py

    def delete_image(request, id):
        image = Image.objects.get(pk=id).delete()
        return HttpResponseRedirect(reverse('app_name:url_name'))
    

    模板

    <ul>
        {% for image in images_list %}
        <li>
            <img src="/{{ image.image }}" height="75" /> 
            <a href="{% url app_name:delete_image image.id %}">Delete</a>
        </li>
        {% endfor %}
    </ul>
    

    【讨论】:

      【解决方案2】:

      views.py

      from django.views.generic.edit import DeleteView
      from django.core.urlresolvers import reverse_lazy
      from myapp.models import Image
      
      class ImageDelete(DeleteView):
          model = Image
          success_url = reverse_lazy('index')
      

      urls.py

      from myapp.views import index, ImageDelete
      
      ...
      url(r'^image/(?P<id>\d+)/delete/$', ImageDelete.as_view(), name="image-delete"),
      ...
      

      index.html

      {% for image in images_list %}
          <li>
              <img src="/{{ image.image }}" height="75" />
              <a href="{% url 'myapp:image-delete' image.id %}">Delete</a>
          </li>
      {% endfor %}
      

      【讨论】:

        猜你喜欢
        • 2014-11-29
        • 2015-08-11
        • 1970-01-01
        • 1970-01-01
        • 2013-11-14
        • 2018-07-18
        • 1970-01-01
        • 2017-03-04
        • 1970-01-01
        相关资源
        最近更新 更多