Используйте Ajax в Django - PullRequest
       4

Используйте Ajax в Django

0 голосов
/ 01 сентября 2018

Я новичок в 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 %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...