django - 在 django 中从前端向数据库添加数据
问题描述
我正在写一个小博客,我希望有一个页面,通过该页面我将在不进入管理面板的情况下更新网站,但似乎没有得到正确的结果。我已经写了一个视图函数,但它还没有响应。我还是个新手下面是我的models.py文件
class UserUpload(models.Model):
artist = models.CharField(max_length=300)
title = models.CharField(max_length=200, unique=True)
slug = models.SlugField(default='', blank=True, unique=True)
thumbnail = models.ImageField(blank=False)
audio_file = models.FileField(default='')
music_tag = models.ManyToManyField(MusicTag)
uploaded_date = models.DateTimeField(default=timezone.now)
page_views = models.IntegerField(default=0)
moderation = models.BooleanField(default=False)
class Meta:
ordering = ['-uploaded_date']
def save(self):
self.uploaded_date = timezone.now()
self.slug = slugify(self.title)
super(UserUpload, self).save()
def __str__(self):
return self.title + ' by ' + self.artist
def get_absolute_url(self):
return reverse('music:detail', kwargs={'slug': self.slug})
这是我的views.py 文件
def upload(request):
if request.method == 'POST':
AUDIO_FILE_TYPE = ['wav', 'mp3', 'ogg']
IMAGE_FILE_TYPE = ['png', 'jpg', 'jpeg']
form = UserMusicForm(request.POST or None, request.FILES or None)
if form.is_valid():
form.save(commit=False)
form.artist = request.POST.get('artist')
form.title = request.POST.get('title')
form.thumbnail = request.POST.FILES('thumbnail')
form.audio_file = request.POST.FILES('audio_file')
form.music_tag = request.POST.get('music_tag')
messages.success(request, 'has been successfully uploaded')
if form.thumbnail.url.split('.')[-1] not in IMAGE_FILE_TYPE:
context = {
"form": form,
"message": "Image file must be PNG, JPG, or JPEG"
}
return render(request, "music/upload1.html", context)
if form.audio_file.url.split('.')[-1] not in AUDIO_FILE_TYPE:
context = {
"form": form,
"message": "Audio file must be WAV, MP3, or OGG"
}
return render(request, "music/upload1.html", context)
print("Remaining save")
form.save()
return redirect('/')
else:
form = UserMusicForm(request.POST or None, request.FILES or None)
context = {
"form": form,
"title": "Upload Your Song",
}
return render(request, "music/upload1.html", context)
这是我的 html 文件
<div class="login-box">
<h2>Upload Your Song</h2>
<form action="" method="POST">{% csrf_token %}
<div class="user-box">
<input type="text" name="artist" required="required">
<label>Artist</label>
</div>
<div class="user-box">
<input type="text" name="title" required="">
<label>Title</label>
</div>
<div class="user-box">
<input type="file" name="thumbnail" required="">
<label>Thumbnail</label>
</div>
<div class="user-box">
<input type="file" name="audio_file" required="">
<label>Audio file</label>
</div>
<div class="user-box">
<input type="text" name="music_tag" required="">
<label>Music tag</label>
</div>
<a href="{% url 'music:upload'%}">
<span></span>
<span></span>
<span></span>
<span></span>
Submit
</a>
</form>
</div>
下面是我的表格
class UserMusicForm(forms.ModelForm):
class Meta:
model = UserUpload
fields = ('artist', 'title', 'thumbnail', 'audio_file', 'music_tag')
解决方案
推荐阅读
- jmeter - 捕获为 request.1 生成的动态值并将其传递给另一个请求
- javascript - 纯JS的跨域iframe中的视差效果?
- php - 需要将数组加入单个数组
- express - POSTMAN - 获取 url 查询参数 - 带有时区 + 符号问题的日期时间中的 url 编码
- java - 基于每个键实现带锁的线程安全服务
- css - bootstrap 4中的三个相等的列
- php - 如何从句子中获取最后 n 个单词?
- caching - 在 MySQL 数据库中存储键值缓存(15kb JSON 值)是一种好的做法吗?
- java - StringUtils StripAccents 用问号替换重音字母
- ios - 当我回到 iOS xamarin.fomrs 中的上一个屏幕时,按钮消失了