【发布时间】:2017-01-14 02:02:11
【问题描述】:
我正在尝试在我的 django 应用程序中构建 ajax cmets。评论写在 TextField() 中,其中有一个 name="cmets_text" 和 class="comment_text。所以为了获取输入的文本,我尝试了ajax_comment = request.POST.get('comment_text')。但是由于某种原因,这返回了None。这是我的代码:
models.py
class Comments(models.Model):
comment_id = models.IntegerField()
parent_id = models.IntegerField()
comment_text = models.TextField(max_length=350, blank=True)
forms.py
class CommentForm(forms.ModelForm):
class Meta:
model = Comments
fields = [
'comment_text'
]
views.py
def article(request, category, id):
...
comment = CommentForm(request.POST or None)
ajax_comment = request.POST.get('comment_text')
print(ajax_comment) #returns None
if request.is_ajax(): #True
if comment.is_valid(): # True
ajax_comment = request.POST.get('comment_text')
print(ajax_comment) #returns None
return HttpResponse('Something')
context = {
'comment': comment,
}
return render(request, 'article.html', context)
模板
<div class="commentsContainer">
<form action="" class="comment_form">{% csrf_token %}
{{ comment.comment_text|add_class:"comment_text" }}
<input type="submit" value="Comment" class="comment_submit">
</form>
<div class="comment_div">
<h3>Username1</h3>
<p>Something</p>
</div>
</div>
base.js
$('.comment_form').on('submit', function(e) {
e.preventDefault();
var url = window.location.href.split('?')[0];
console.log(url); // this works fine
$.ajax({
type: 'POST',
url: url,
dataType: 'json',
data: {
text: $('.comment_text').val(),
csrfmiddlewaretoken: $("input[name='csrfmiddlewaretoken']").val(),
},
success: function(text) {
$('.comment_div').append("<div class='comment_div'><h3>username</h3><p>" + text + "</p></div>");
console.log(text); // text=something&csrfmiddlewaretoken=sWJashvQgbKG9hM0imiFTjj3EQrCP5qRfq60XraoQK1SULlPumJonyMktt9DllEC
}
})
});
有什么想法吗?
【问题讨论】:
-
我在 JavaScript 中看不到
'comment_text'。您将评论文本发送为'text'- 请参阅data: { text: ... } -
谢谢它现在可以使用了。
标签: javascript jquery python ajax django