Я новичок в Django. Я просто создаю веб-приложение для публикации в блоге.
Моя проблема в том, что я хочу прокомментировать сообщение с помощью Ajax. Но когда я пишу функцию ajax в viewpost.html, это не работает. Означает, что когда я нажимаю на кнопку комментария, то это не метод «POST». Если я обойдусь без Ajax, то это сработает.
urls.py
from django.conf.urls import url
from .views import HomeView,viewpost
from . import views
urlpatterns = [
url(r'^$', views.HomeView, name='Myprofile'),
url(r'^posts/(?P<id>[0-9]+)$', views.viewpost, name='viewpost'),
]
view.py file
def viewpost(request,id):
posts = get_object_or_404(Post,pk=id)
comments = Comments.objects.all().filter(post_id=id)
print("caalingme")
if request.method == 'GET':
print("OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO")
template_name = 'home/viewpost.html'
postcommenting = PostsData()
args = {'postcommenting': postcommenting,'posts':posts, 'comments':comments,'id':id}
return render(request, 'home/viewpost.html', args)
else:
print("*********************************")
template_name = 'home/viewpost.html'
postcommenting = PostsData(request.POST)
if postcommenting.is_valid():
print("********* comment **********")
postcomment = postcommenting.save(commit=False)
text = postcommenting.cleaned_data['comment']
postcomment.user = request.user
posts = get_object_or_404(Post,pk=id)
postcomment.post = posts
postcomment.save()
postcommenting = PostsData()
return render(request, 'home/comment.html',{'text':text})
else:
posts = get_object_or_404(Post,pk=id)
findlike = Like.objects.all().filter(post_id=posts.id,user=request.user)
if(len(findlike)==0):
posts.likee+=1
tolike = Like()
tolike.count_l = posts.likee
tolike.user = request.user
tolike.post = posts
posts.save()
tolike.save()
print(posts.likee)
args = {'postcommenting': postcommenting,'posts':posts, 'comments':comments,'id':id}
return render(request, 'home/viewpost.html', args)
Мой файл viewpost.html
{% extends 'base.html' %}
{% block ajaxcall %}
<script type="text/javascript">
$(document).ready(function(){
$("#post_form").submit(function(e){
e.preventDefault();
alert($(this).serialize())
$.ajax({
url: $(this).attr("action"),
method:"POST",
dataType: "json",
data: $(this).serialize(),
success: function(serverResponse){
$("#all_posts").html(serverResponse)
}
});
});
});
</script>
{% endblock %}
{% block content %}
<h1>HOMEin myprofile</h1>
<hr/>
<p>Hllo g satshree akal</p>
<p>{{posts.user.first_name}}</p>
<h3>{{posts.post}}</h3>
<strong>{{posts.date}}</strong>
<h1>{{posts.likee}}</h1>
{% for postcomment in comments %}
<div style="color:white; background:black; margin:20px; width:50px;" id="all_posts">
<p>{{postcomment.comment}}</p>
<strong>{{postcomment.user}}</strong>
</div>
{% endfor %}
<br/>
<br/>
<br/>
<br/>
<div class="container">
<form id = "post_form" action="{% url 'viewpost' id %}" method="POST">
{% csrf_token %}
{{ postcommenting.as_p }}
<button type="submit">sumbit</button>
</form>
<br/>
<br/>
<form method="POST">
{% csrf_token %}
<button type="submit" id="like" name="post_id" value="{{posts.likee}}">like</button>
</form>
</div>
{% endblock %}