如果image.png从 Web 浏览器image.png上传文件,服务器上的上传目录中将出现一个名为的新文件。
如果我再上传另一个名为image.png(同名)的文件,一个名为的新文件image_aj642zm.png将出现在服务器上的上传目录中。
然后,如果我上传另一个名为image.png(同样名称)的文件,一个名为的新文件image_z6z2BaQ.png将出现在服务器上的上传目录中。
如果上传目录中已经存在具有该名称的文件,Django 使用什么方法来重命名上传的文件?(即额外的_aj642zm和_z6z2BaQ来自哪里?)
常规设置:
在models.py中:
from django.db import models
class Image(models.Model):
image = models.ImageField(upload_to='uploads/')
Run Code Online (Sandbox Code Playgroud)
在forms.py中:
from django import forms
from .models import Image
class ImageForm(forms.ModelForm):
class Meta:
model = Image
fields = ['image']
Run Code Online (Sandbox Code Playgroud)
在views.py中:
from django.shortcuts import render, redirect
from .forms import ImageForm
def upload_image(request):
if request.method == 'POST':
form = ImageForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('index')
else:
form …Run Code Online (Sandbox Code Playgroud) 为了这个目的,我正在DJango中进行图片库项目。而且,我有一个名为Gallery的类和名为的类ImageGallery。
名为gallery的类如下所示:
class Gallery(models.Model):
gallery = models.ForeignKey(Gallery, related_name="parent_gallery")
title = models.CharField(max_length=200)
folder = models.CharField(max_length=200) # ex: images/galleries/slugify(self.title)
class ImageGallery(models.Model):
gallery = models.ForeignKey(Gallery, related_name="parent_gallery")
title = models.CharField(max_length=200)
image = models.ImageField(upload_to=self.gallery.folder)
Run Code Online (Sandbox Code Playgroud)
好吧,最后一行代码是我想知道它是否可能或对其进行任何其他精细替换的内容。
在“ DJango-admin我希望能够为该表添加记录”中ImageGallery,选择“ Gallery我想使用”时,图像将保存到gallery.folder字段中指定的文件夹中。
解决此问题的最佳方法是什么?我还没有完成这两节课的写作,但我怀疑它们会像这样工作。先感谢您。:-)
我的应用程序需要在静态文件夹内的不同文件夹中上传不同的配置文件图像。还有一件事,我没有使用模型,我只想拍摄我在html输入文件中选择的图片并将其复制到特定文件夹。
这是我的文件夹树。我要保存上传的图像MYPROJECTFOLDER/static/profile/<TheUserSpecificFolder>/的位置是我不想使用的位置MEDIA_ROOT,因为在媒体根目录中,我无法为每个用户创建一个特定的文件夹。(我不知道这是否正确,是否可以在/ media /文件夹中为每个用户创建一个特定的文件夹而不使用ImageField或FileField,请告诉我)。
这是我的文件夹树:
MYPROJECTFOLDER
|
|------myproject/
|
|------myapp/
|
|------static
| |-------profile
| |------folder_user1
| |------ uploadedpicture.jpg #Here is where I want to upload
| |------folder_user2
Run Code Online (Sandbox Code Playgroud)
这是我的 uploadpic.html
<form action="{% url 'upload' %}" enctype="multipart/form-data" method="POST">
{% csrf_token %}
<input type="file" name="avatar" accept="image/gif, image/jpeg, image/png">
<button type="submit">Upload</button>
</form>
Run Code Online (Sandbox Code Playgroud)
这是我的views.py
from django.shortcuts import render, HttpResponse, redirect
from . import forms
import os
def upload(request):
img = request.FILES['avatar']
#This just create the …Run Code Online (Sandbox Code Playgroud) 我正在学习如何使用简单的图像上传表单将图像上传到MEDIA_ROOT.表单呈现正常,我没有错误,但文件没有出现在MEDIA_ROOT目录中.如果遵循文档示例并且无法使其工作,我知道这是因为我没有正确理解django文件上传handeling.所以这是我的代码:
forms.py
from django import forms
class UploadImageForm(forms.Form):
image = forms.ImageField()
Run Code Online (Sandbox Code Playgroud)
views.py
def merchant_image_upload(request):
if request.method == 'POST':
form = UploadImageForm(request.POST, request.FILES)
if form.is_valid():
FileUploadHandler(request.FILES['image'])
return HttpResponseRedirect('/dashboard/gallery')
else:
form = UploadImageForm()
return render_to_response('gallery.html', RequestContext(request, {'form': form}))
Run Code Online (Sandbox Code Playgroud)
模板文件
{% extends 'base.html' %}
{% block main %}
<form action="{% url scvd.views.merchant_image_upload %}" method="post">{% csrf_token %}
{{ form.image }}
<input type="submit" value="Upload" />
</form>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
希望这是足够的信息来获得一些帮助.请让我知道我还能提供什么.谢谢,我真的很感激帮助.
我有一个 Django 表单,里面有一个ImageField,我在我的模板中呈现这样的字段:
{{ form.my_image_field }}
Run Code Online (Sandbox Code Playgroud)
生成的 HTML 如下所示:
{{ form.my_image_field }}
Run Code Online (Sandbox Code Playgroud)
我只想渲染<input元素,因为我使用的是 bootstra-fileinput 库:https://www.npmjs.com/package/bootstrap-fileinput:
Currently: <a href="https://....s3.amazonaws.com/....jpg">....jpg</a>
<input name="my_image_field-clear" id="my_image_field-clear_id" type="checkbox">
<label for="my_image_field-clear_id">Clear</label><br>
Change:
<input name="my_image_field" id="id_my_image_field" type="file">
Run Code Online (Sandbox Code Playgroud)
是否可以在不<input>手动在模板中编写标签的情况下执行此操作?