Django request.FILE возвращает None
My html template
<form method="post" action="" enctype="multipart/form-data" class="form-group">
{% csrf_token %}
<h1 class="m-3 text-center">New Post</h1>
<div id="tui-image-editor-container" style="min-height:750px;"></div>
<!--<input type="file" name="name" value="" />-->
<div class="row m-2">
<input type="datetime-local" class="form-control-lg col m-2" name="date" default="" />
<input type="text" class="form-control-lg col m-2" name="location" placeholder="Where are You ?" />
</div>
<div class="row m-2">
<input type="text" class="form-control col m-2" name="hashtags" placeholder="Hashtags" />
<input type="text" class="form-control col m-2" name="tags" placeholder="Tag Your Friends" />
</div>
<div class="row m-4">
<input type="submit" class="btn btn-primary btn-lg col" id="abc" value="Create">
</div>
Файл Javascript
document.querySelector(".tui-image-editor-load-btn").setAttribute("name", "PostedImage")
views.py
def newpost_view(request,email,*args,**kwargs):
if request.method == 'POST':
newpost = {
'date':request.POST['date'],
'location':request.POST['location'],
'hashtags':[f['value'] for f in json.loads(request.POST['tags'])],
'tags':[f['value'] for f in json.loads(request.POST['hashtags'])]
}
print(newpost)
print(request.FILES.get('PostedImage'))
id = email[0:5]
variables={'id':id}
return render(request,'newpost.html',variables)
Я хочу получить изображение из ввода. Сам элемент добавляется через javascript, потому что я использую сниппет Vanilla для работы с изображениями.
Он отображается нормально, и мой браузер показывает элемент с добавленным тегом name как "PostedImage". Но это отображается как ошибка, так как request.FILE['PostedImage'] отображается пустым. Дело в том, что я не могу добавлять элементы после загрузки страницы или я не могу добавлять теги имен после и django не читает их? Я не могу сделать это с помощью формы, потому что форма не может использовать существующее поле ввода, а добавляет свое собственное. Буду признателен за любую помощь в этом вопросе. Я читал предыдущие темы по этому типу вопросов:
- My form has the
enctypetag added - My Submit button has
type='Submit
Вы создаете элемент при отправке, как я вижу по виду, вы пытаетесь получить элемент PostImage, но его там нет, потому что он не создается в момент обработки запроса в бэкенде, что бы я сделал, это ceate image input с PostImage в качестве имени, и вместо того, чтобы создавать его с помощью js, я бы поместил его в html код и скрыл его, как это:
<input type='file' name='PostImage' hidden>
и когда вы делаете отправку, вы можете сделать свой ввод видимым с помощью Js DOM.