#python #django #django-models #django-views
#python #django #django-модели #django-просмотры
Вопрос:
Когда я добавляю изображение, URL-адрес изображения полностью виден, но когда я обновляю его, это половина прошлого
это мой models.py
from django.db import models
# Create your models here.
class ImageUpload(models.Model):
get_image = models.FileField(upload_to='gallery/new/',null=True)
это мой views.py
from django.shortcuts import render,redirect
from upload.models import ImageUpload
# Create your views here.
def add_image(request):
if request.method == "POST":
image = request.FILES['myimage']
save_image = ImageUpload(get_image=image)
save_image.save()
return redirect('/')
else:
image_data = ImageUpload.objects.all()
return render(request,'add_image.html',{'image_data':image_data})
def update_image(request, id):
if request.method == "POST":
image = request.FILES['myimage']
save_image = ImageUpload.objects.filter(id=id).update(get_image=image)
return redirect('/')
else:
image_data = ImageUpload.objects.filter(id=id)
return render(request,'update_image.html',{'image_data':image_data})
это мой urls.py
from django.urls import path
from upload.views import add_image, update_image
app_name = 'upload'
urlpatterns = [
path('', add_image, name="add_image"),
path('update_image/<id>/', update_image, name="update_image"),
]
это мой settings.py статическая и мультимедийная конфигурация
STATIC_URL = '/static/'
STATICFILES_DIRS = [
BASE_DIR / "static",
]
STATIC_ROOT = BASE_DIR.parent / "static_cdn"
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / "media"
это мой проект urls.py
from django.contrib import admin
from django.urls import path,include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('upload.urls')),
]
if settings.DEBUG:
urlpatterns = static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
это мой add_image.html
<form action="{% url 'upload:add_image' %}" method="POST" class="col-md-8 offset-md-2 mb-5" enctype="multipart/form-data">
{% csrf_token %}
<div class="input-group col-md-6 mb-3">
<input type="file" class="form-control" name="myimage" id="inputGroupFile01" required>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
<!-- form -->
{% if image_data %}
<h2 class="bg-warning text-white p-3 mb-5">All Images</h2>
{% for i in image_data %}
<div class="col-md-8 offset-md-2 my-4">
<label class="input-group-text" for="inputGroupFile01">{{ i.get_image }}</label> <a href="{% url 'upload:update_image' i.id %}" class="btn btn-primary btn-sm float-right">Update</a><a href="{{ i.get_image.url }}" class="btn btn-success my-1 mx-3 btn-sm float-right" target="_blank">View</a>
</div>
{% endfor %}
{% endif %}
это мой update_image.html
<!-- form -->
{% for i in image_data %}
<form action="{% url 'upload:update_image' i.id %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
<div class="input-group col-md-6 mb-3">
<label class="input-group-text" for="inputGroupFile01">Upload</label>
<input type="file" class="form-control" name="myimage" id="inputGroupFile01" required>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
{% endfor %}
<!-- form -->
Когда я добавляю, URL-адрес изображения выглядит следующим образом http://127.0.0.1:8000/media/gallery/new/img_2.jpg
но когда я обновляю изображение, URL-адрес меняется следующим образом http://127.0.0.1:8000/media/comming_soon.jpg
Комментарии:
1. удалось ли вам обновить экземпляр загрузки изображения? Обновился ли get_image?
2. изображение не обновляется
3. после обновления URL-адрес сохраняется в базе данных, но файл не загружается в соответствующее местоположение
4. этот URL-адрес хранится в базе данных 127.0.0.1:8000/media/comming_soon.jpg но это должно быть так 127.0.0.1:8000/media/gallery/new/comming_soon.jpg
Ответ №1:
Проблема, похоже, исходит отсюда.
save_image = ImageUpload.objects.filter(id=id).update(get_image=image)
попробуйте заменить на:
imageupload = get_object_or_404(ImageUpload, id=id)
imageupload.get_image = image
imageupload.save()
Комментарии:
1. когда я пробую второй, он выдает мне эту ошибку: объект ImageUpload не имеет атрибута ‘update’