Как удалить изображение, расположенное как URL в Flask? - PullRequest
0 голосов
/ 28 апреля 2018

Я работаю в Flask-Python 3.x. Я занимаюсь разработкой веб-сайта, где пользователи могут публиковать фотографии на общедоступном форуме. Я разрабатываю ссылку, чтобы удалить сообщения. Функция просмотра, связанная с удалением сообщения, выглядит следующим образом:

@main.route('/moderate-posts', methods=['GET', 'POST'])
@login_required
def moderate_posts():
    if request.method == 'POST': 
        post_to_remove = Post.query.filter_by(id=request.form["post_to_delete"]).first_or_404()
    # Remove image file if there is one in the post
        if post_to_remove.image_1_url is not None: 
            requests.delete(post_to_remove.image_1_url) # I found it out it doesn't make sense :( 
        Post.query.filter_by(id=post_to_remove.id).delete()
        db.session.commit()
        flash("The post has been deleted :) ")
    return render_template('moderate_posts.html', posts=posts)

Я пытался использовать requests.delete(post_to_remove.image_1_url), но он не работает. Формат post_to_remove.image_1_url: https://www.my_domain.org/static/img/img_posts/image.jpg Как я могу удалить изображение этого поста? Есть идеи?

1 Ответ

0 голосов
/ 29 апреля 2018

Я решил вопрос. Чтобы иметь возможность использовать os.remove(file_to_remove), первое, что необходимо сделать, - это найти file_to_remove в файловой системе. Домашний путь может быть получен в Python 3.4 с помощью:

from os.path import expanduser
home = expanduser("~")

и в Python 3.5+ с:

from pathlib import Path
home = str(Path.home())

, то:

if post_to_remove.image_1_url is not None:
    home = pathlib.Path(path.expanduser("~"))
    image_name = post_to_remove.image_1_url.split("/")[-1]
    file_to_remove = os.path.join(home,'/static/img/img_posts/', image_name)
    if os.path.isfile(file_to_remove):
        os.remove(file_to_remove)
    else:
        pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...