我是Django的新手。我的html
文件中有以下代码:
{% load staticfiles %}
<form method="post"> {% csrf_token %}
<input type="file" name="file">
<button>Submit</button>
</form>
{{file}}
<img class="hl" src="{{ MEDIA_URL }}photos/abc.png" /></a>
<img class="hl" src="{% static 'blog/images/sec.png' %}" /></a>
以及上述代码的views.py
是:
if request.method == 'POST':
if 'file' in request.POST:
f = request.POST['file']
a = MyUser(email="frt@wer.com", date_of_birth=date.today())
a.photo.save('somename.png', File(open(f, 'r')))
a.save()
context = {'file': f}
return render(request, 'home.html', context)
现在浏览器不会从用户的本地设备返回文件的绝对路径,它只是收集文件名,因为有些security issues
但是a.photo.save('somename.png', File(open(f, 'r')))
我的代码的这部分需要用户本地设备的绝对路径我得到的/home/abc/Pictures/sec.png
之类的内容是sec.png
,因此我无法上传。
来自python manage.py shell
:
>>>a = MyUser(email="frt@wer.com", date_of_birth=date.today())
>>>a.photo.save('somename.png', File(open('/home/abc/Pictures/sec.png', 'r')))
>>>a.save()
这很好用。有一些解决方法。我不想使用Form
。
答案 0 :(得分:2)
我建议如果你想允许文件上传你使用文件表单而不是解决方法。这里有一个简单而简洁的例子: