我正在使用django在新闻网站上工作,我在其中管理有关文章的数据 我有id,内容,标题,类别和图像,这是一个FileField
class Article(models.Model):
id=models.AutoField(primary_key=True)
title=models.CharField(max_length=100,null=False,blank=False)
category=models.ForeignKey(Category,null=False,blank=False)
date=models.DateTimeField(auto_now_add=True)
content = models.TextField(null=False, blank=False)
resume=models.CharField(null=False,blank=False,max_length=400)
image = models.FileField(verbose_name=blank=True)
我创建了一个包含有关文章
的数据的添加表单表单包含一个输入文件
<input type="file" name="image">
表单正确提交数据并成功存储图像。 但是我注意到此输入仅适用于本地图像。 只有当我从计算机中手动选择图像或将其拖动到输入时,它才有效。
如果我将图片从网站拖到输入中,它就无法正常工作。
我想知道是否有可用于将图像从其他网站拖到文件输入的解决方案,因为每次我需要提交图像时我都需要下载它。
任何帮助将不胜感激
答案 0 :(得分:0)
您需要获取图片的网址并使用urllib2
下载
这是一个如何使用javascript获取网址的简单示例
$(document).on('dragover', function(e) {e.preventDefault();return false;});
$(document).on('drop', function(e) {
e.preventDefault();
e.originalEvent.dataTransfer.items[0].getAsString(function(url){
alert(url);
});
});
以下是您可以下载并在模块中使用它的方法
from urllib.parse import urlparse
import requests
from django.core.files.base import ContentFile
from myapp.models import Photo
img_url = "url" #request.POST["url"] for example
name = urlparse(img_url).path.split('/')[-1]
photo = Article() # you need to use ImageFiled if it's just an image in your model
response = requests.get(img_url)
if response.status_code == 200:
photo.image.save(name, ContentFile(response.content), save=True)