ama*_*ion 2 django image-upload
我就是不知道如何在 django 中上传图片。我在这里阅读了数十篇博客文章和问题,但其中大多数只会让我更加困惑。
这是我到目前为止所拥有的。这是我的模型:
class Post(models.Model):
user = models.ForeignKey(User)
screenshot = models.ImageField(null=True, upload_to="images")
date = models.DateTimeField("date posted", auto_now=True)
text = models.TextField()
Run Code Online (Sandbox Code Playgroud)
这是我使用的表格:
class PostForm(forms.Form):
text = forms.CharField(
widget = forms.Textarea(attrs = {'cols': 40, 'rows': 10}), required=True)
screenshot = forms.ImageField(required=False)
Run Code Online (Sandbox Code Playgroud)
这是我目前处理表单的方式:
if request.method == 'POST':
form = PostForm(request.POST, request.FILES)
if form.is_valid():
post = Post(
user = request.user,
text=form.cleaned_data['text'],
screenshot=form.cleaned_data['screenshot']
)
post.save()
Run Code Online (Sandbox Code Playgroud)
但这不起作用,文件没有上传到服务器。根据文件上传文档,我必须编写自己的 handle_uploaded_file 函数,但该页面没有解释:
那些问题好像已经解决了一千次了……
1)您ImageField需要一条upload_to路径:
models.ImageField(required=False, upload_to="/relative/path/to/foo/bar")
请注意,IIRC,这是相对于您的 MEDIA_ROOT
2)为了将它们分布在目录中,只需设置upload_to=my_path_naming_method并执行
def my_path_naming_method(instance, filename):
#something here that returns a new/bespoke string path for each file or similar
Run Code Online (Sandbox Code Playgroud)
3) 如果两个文件同名,Django 会给新的一个_后缀。egfoo.jpg和 'foo_.jpg' 所以永远不会有名字冲突
4) 我不明白你的意思,但希望 1-3 已经让你滚动。
| 归档时间: |
|
| 查看次数: |
6732 次 |
| 最近记录: |