Я делаю одностраничный веб-сайт, где хочу ввести текст и загрузить файлы. По сути, я хочу, чтобы моя форма выглядела во внешнем интерфейсе: сначала я могу набрать текст в указанной области текста, ниже я должен иметь возможность выбрать несколько файлов, после того, как файлы выбраны, я нажму кнопку загрузки. кнопку, файлы должны быть загружены, а затем я нажму "отправить", и вот как я создаю сообщение.
Я прилагаю свой код ниже. Я написал свой испорченный файл views.py
, но пока не прикрепляю его.
models.py :
class Post(models.Model):
post_body = models.TextField(blank=False, max_length=500)
class PostMedia(models.Model):
file = models.FileField()
body = models.ForeignKey(Post, on_delete=models.CASCADE)
forms.py :
from django.forms import ClearableFileInput
from django.forms import ModelForm
from .models import Post, PostMedia
class PostModelForm(ModelForm):
class Meta:
model = Post
fields = ['post_body']
class PostMediaModelForm(ModelForm):
class Meta:
model = PostMedia
fields = ['file']
widgets = {
'file': ClearableFileInput(attrs={'multiple': True}),
form.html (I was trying to write the jquery function):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
$('text-form').on('submit',upload(e) {
e.preventDefault();
$.post( '../create-post', $('form').serialize(), function( data ) {
alert( data );
} );
});
</script>
<div class="site-form">
<h2>Create a New Post here! </h2>
<form action="." method="post" name="text-form">
{% csrf_token %}
{{ form }}
<br><br>
<form action="." method="post" name="file-form" enctype="multipart/form-data" data-ajax="false">
{% csrf_token %}
{{ file_form }}
<br><br>
<input type="submit" value="Upload files" onclick="upload(); return false;"/>
<br><br>
<input type="submit" value="Create post"/>
</form>
</form>
</div>
urls.py
url(r'^/create-post', upload_files, name='create-post'),
url(r'^/submit-post', submit_post, name='submit-post'),
Теперь я хочу, чтобы при нажатии кнопки загрузки я оставался на той же самой странице, но в фоновом режиме, в views.py
он должен фактически сохранять выбранные файлы (принимая во внимание, что я не могу сохранить файлы если только и до тех пор, пока я не сохраню текст bcz of Foreignkey), а затем я могу нажать кнопку «Отправить», чтобы сохранить сообщение.
Как мне этого добиться? Просто дать рабочий процесс также будет оценено. Я не знаю jquery или ajax, я думаю, они добиваются цели здесь ..