HTML表单数据未保存在数据库中 - django
Posted
技术标签:
【中文标题】HTML表单数据未保存在数据库中 - django【英文标题】:HTML form data not saved in database - django 【发布时间】:2020-10-07 14:55:15 【问题描述】:我可以从 html 中获取数据,但它不会保存到数据库中,我该怎么办? 它工作正常,唯一的问题是它不会被保存
views.py
def comment(request , newsId):
cm = get_object_or_404(models.News , id= newsId)
print("news = " + newsId)
if request.method == 'POST' :
cm.comments_set.text = request.POST.get('comment_text')
cm.comments_set.name = request.POST.get('comment_name')
cm.save()
return HttpResponseRedirect(reverse('details', args=(cm.id,)))
urls.py
urlpatterns = [
path('', views.test),
path('details/<newsId>', views.details, name="details"),
path('comment/<newsId>' , views.comment ,name="comment")]
models.py
class News(models.Model):
title = models.CharField(max_length=300)
author = models.CharField(max_length=100)
date = models.DateTimeField()
description = models.TextField()
like = models.IntegerField(default=0)
img = models.CharField(max_length=100)
def __str__(self):
return self.title
class Comments(models.Model):
news = models.ForeignKey(News, on_delete=models.CASCADE)
name = models.CharField(max_length=100)
text = models.TextField()
def __str__(self):
return self.name
html表单
<form action="% url 'comment' newsKey.id %" method="POST">
% csrf_token %
<textarea name="comment_text" id="comment_text_id" cols="30" rows="10" placeholder="Write your here comment here"></textarea>
<input type="text" name="coment_name" id="comment_name_id" placeholder="Type full name"/>
<button type="submit" value="comment_submit"> SUBMMIT </button>
</form>
【问题讨论】:
【参考方案1】:您在这里所做的是在 comments_set
上设置一些随机属性后保存原始的 News
对象(不是 Comment
)。
基本上你是在拍摄空白:)
# fix this part.
news_article = get_object_or_404(models.News, id=newsId)
comment = models.Comment(
name=request.POST.get('comment_name' , ''),
text=request.POST.get('comment_text',''),
news=news_article
)
comment.save()
comment_set
用于选择给定News
文章的所有相关cmets。
看到这个django tutorial。
上面的内容也可以通过使用create
方法来缩短,如下所示:
models.Comment.objects.create(
name=request.POST['comment_name'],
text=request.POST['comment_text'],
news=news_article
)
这个方法也保存到数据库中。
【讨论】:
以上是关于HTML表单数据未保存在数据库中 - django的主要内容,如果未能解决你的问题,请参考以下文章
Django绑定表单无效,但未引发ValidationError