我目前正在学习Django。我正在构建一个系统,该系统从用户那里获取输入作为图像并返回损坏程度。我把所有的python文件都赶上了。但是我在执行Django部分时遇到困难。
如何从用户那里获取图像作为输入?
我该如何将对损坏程度进行预测的代码的结果放回前端?
预先感谢
答案 0 :(得分:0)
要从用户那里获取图像,您可以执行以下操作。但是,不建议从请求中获取数据。
Views.py
from django.shortcuts import render, render_to_response
from django.core.files.storage import FileSystemStorage
def index(request):
if request.POST:
if request.method == 'POST' and request.FILES['image']:
uploaded_image = request.FILES['image']
fs = FileSystemStorage()
filename = fs.save(uploaded_image.name, uploaded_image)
uploaded_file_url = fs.url(filename)
code = get_code(uploaded_file_url)
return render_to_response("homepage.html", {"code": code})
else:
return render(request, "homepage.html")
使用此request.FILES['image']
,我们可以从事件后传递的表单中获取图像。
在您的模板 homepage.html
中<form method="post" action="{% url 'code' %}" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="image" id="file-input" accept="image/x-png,image/jpeg,image/jpg"/>
<input type="submit" style="background: #0b0b0b" class="btn btn-secondary" value="Generate Caption"/>
<br><br>
<div style="background: #0b0b0b">
<a>Code for image is : {{ code }}</a>
</div>
</form>
{% url 'code' %}
,这将按照urls.py中定义的名称反转url。出于安全原因,{% csrf_token %}
是必需的。需要enctype="multipart/form-data"
来传递图像,文件等数据。名称为name="image"
的输入就是我们在request.FILES['image']
中寻找的内容。如果要更改名称,请在任何地方进行更改。
并在您的 urls.py
中from django.conf.urls import url
urlpatterns = [
url(r'^$', views.homepage, name='code'),
]
另外,您可以查看Django forms,以寻求更好的方法。