【发布时间】:2020-09-16 14:46:13
【问题描述】:
我在这上面花了三天多的时间。似乎有些东西保存到了数据库中,但是当我尝试在模板中访问它时,我只能获取数据库的对象。我无法访问它。我相信它没有成功保存,因为我没有看到将保存它的媒体文件夹。这是我目前所拥有的。
# settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'), )
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
# forms.py
from .models import Pic
from django import forms
class ImageForm(forms.ModelForm):
class Meta:
model= Pic
fields= ["picture"]
# models.py
class Pic(models.Model):
picture = models.ImageField(upload_to = 'media/', default = 'media/None/no-img.jpg', null=True, blank= True)
# views.py
def upload(request):
form = ImageForm
context = {}
userBio = Bio.objects.get(userData = User.objects.get(id = request.session['client']['id']))
if request.method == 'POST':
# .is_valid checks the models parameters via forms method
form = ImageForm(request.POST,request.FILES)
if form.is_valid():
form.save()
print("succesful uploaded image")
return redirect("/dashboard")
else:
print("Not a valid input from form....")
messages.error(request,"Not a valid input")
return redirect("/dashboard")
<!-- dashboard.html -->
<form rule="form" class="border border--secondary" method="POST" action="/manageFile" enctype="multipart/form-data">
{% csrf_token%}
<input type="file" name = "update">
<input type = "submit">
</form>
{% if pictures %}
{% for pic in pictures%}
<img src="{{pic}}" alt="{{pic}}">
{% endfor %}
{% endif%}
在模板中,它显示为 Pic 对象(1)。 在终端中,它显示为
查询集Pic:Pic对象(1)
这是我渲染到模板的内容。
def dash(request):
try:
_id = request.session['client']['id']
except:
return redirect("/loginPg")
userBio = Bio.objects.get(userData = User.objects.get(id = request.session['client']['id']))
print("its right here")
theUploads = Pic.objects.all()
print("This image object -", theUploads)
content = {
"title" : userBio.title,
"qA" : userBio.quoteA,
"qB" : userBio.quoteB,
"desc" : userBio.desc,
"authorA" : userBio.authorA,
"authorB" : userBio.authorB,
"pictures" : theUploads
}
return render(request, "GoEnigma/dashboard.html", content)
# urls.py
from django.conf.urls.static import static
from django.conf import settings
# urls []
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
【问题讨论】:
-
似乎只保存了模型参数的默认值。这是我在模板中看到的。 /media/media/None/no-img.jpg
-
如果
upload是Pic 模型的方法,那么站点将无法启动,因为循环导入。我认为上传是在views.py 中?而且你也错过了一个 return 声明。 -
上传请求方法在views.py中。如果表单有效,我将返回重定向。有趣的是,模型中的默认值是唯一被保存的东西。到目前为止,我有两个相同的网址。看起来像这样。 /media/media/None/no-img.jpg
-
<input type="file" name = "update">是任意的,输入相同的字段名称:picture而不是update
标签: django django-models django-rest-framework django-forms django-templates