簡體   English   中英

我正在嘗試在 Django 中添加喜歡/不喜歡的功能而不刷新頁面

[英]i am trying to add functionality like/dislike without page refresh in django

我正在嘗試在不刷新頁面的情況下添加喜歡/不喜歡的功能,但我無法在此處設置邏輯,這是我的 models.py 文件代碼

from django.db import models

# Create your models here.


class EmployeeDetail(models.Model):
    emp_fname = models.CharField(max_length=50, default="")
    emp_lname = models.CharField(max_length=50, default="")
    emp_uname = models.CharField(max_length=100, default="")
    emp_email = models.EmailField(max_length=254, default="")
    emp_password = models.CharField(max_length=100, default="")
    emp_dob = models.DateField(max_length=50, default="")
    emp_doj = models.DateField(max_length=50, default="")
    emp_designation = models.CharField(max_length=100, default="")
    emp_salary = models.IntegerField()
    emp_leaves = models.IntegerField()
    emp_contact = models.CharField(max_length=12, default="")
    emp_photo = models.ImageField(upload_to="employee/images", default="")

    def __str__(self):
        return self.emp_fname


class Post(models.Model):
    emp_id = models.ForeignKey(EmployeeDetail, on_delete=models.CASCADE)
    title = models.CharField(max_length=255)
    slug = models.CharField(max_length=150)
    content = models.TextField()
    author = models.CharField(max_length=15)
    timeStamp = models.DateTimeField(auto_now_add=True)
    likes = models.IntegerField(default=0)
    dislikes = models.IntegerField(default=0)

    def __str__(self):
        return self.title + ' by ' + self.author


class Preference(models.Model):
    user_id = models.ForeignKey(EmployeeDetail, on_delete=models.CASCADE)
    post_id = models.ForeignKey(Post, on_delete=models.CASCADE)
    value = models.IntegerField()
    date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return str(self.user_id) + ':' + str(self.post_id) + ':' + str(self.value)

和我的 urls.py 代碼在這里

from django.urls import path
from .import views


urlpatterns = [
    path('', views.login, name='Login'),
    path('logout', views.logout, name='Logout'),
    path('employee/home/', views.home, name='Home'),
    path('employee/manageuser/', views.manageuser, name='manageuser'),
    path('employee/blank/', views.blank, name='blank'),
    path('employee/font_awesome/', views.font_awesome, name='fontawesome'),
    path('employee/map_google/', views.map_google, name='map google'),
    path('employee/not_found/', views.not_found, name='map google'),
    path('employee/register/', views.register, name='Registration'),
    path('employee/employee_profile/<int:id>', views.employee_profile, name='Employee Profile'),
    path('employee/delete_employee/<int:id>', views.delete_employee, name='Delete Employee'),
    path('employee/edit_employee/<int:id>', views.edit_employee, name='Edit Employee'),
    path('employee/create_post/', views.create_post, name='Create Post'),
    path('employee/blogpost/<slug:slug>', views.blogpost, name='Blog Post'),
    path('employee/blogpost/<int:post_id>/preference/userpreference', views.postpreference, name='postpreference')


]

我在這里有 views.py 文件代碼

from django.shortcuts import render, redirect
from .models import EmployeeDetail, Post, Preference
from django.http import HttpResponse
from django.contrib import messages

# Create your views here.




def create_post(request):
    if request.session.has_key('emp_uname'):
        name = request.session['emp_uname']
        query = EmployeeDetail.objects.filter(emp_uname=name)

        if request.method == "POST":
            title = request.POST.get('title')
            slug = request.POST.get('slug')
            eid = request.POST.get('eid')
            euname = request.POST.get('ename')
            content = request.POST.get('content')
            empid = EmployeeDetail.objects.get(id=eid)


            post = Post(emp_id=empid, title=title, slug=slug, content=content, author=euname)
            # print(post.emp_id.id)
            post.save()
            return redirect('/employee/home')
        else:
            return render(request, 'create_post.html', {'query': query})
    else:
             messages.error(request, 'You have to login First')
             return redirect('/')


def blogpost(request, slug):
    if request.session.has_key('emp_uname'):
        name = request.session['emp_uname']
        query = EmployeeDetail.objects.filter(emp_uname=name)
        postslug = Post.objects.filter(slug=slug)
        return render(request, 'blogpost.html', {'postslug': postslug, 'query': query})
    else:
             messages.error(request, 'You have to login First')
             return redirect('/')


def postpreference(request, postid):
    return render(request, 'blogpost.html', context)

我有 blogpost.html 文件在這里我有特定的博客詳細信息和喜歡/不喜歡的鏈接也在該頁面中,當有人喜歡/不喜歡這里的詳細代碼時,我不想刷新此頁面

<div class="col-md-12 col-lg-8 col-sm-12">
                        <div class="white-box">
                            <h3 class="box-title">Latest Blog</h3>
                            <div class="comment-center p-t-10">
                                {% for fullpost in postslug %}
                                <div class="comment-body">
                                    <div class="user-img"> <img src="{% static 'plugins/images/users/pawandeep.jpg' %}" alt="user" class="img-circle">
                                    </div>
                                    <div class="mail-contnet">
                                        <h5>{{ fullpost.author }}</h5><span class="time">{{ fullpost.timeStamp }}</span>
                                        <h3><b>{{ fullpost.title}}</b></h3>
                                        <br/><span class="mail-desc">{{ fullpost.content }}</span>

                                        <a href="#" onClick="document.getElementById('likebutton').submit()">Like This Post</a> {{fullpost.likes}}   |
                                        <a href="#" onClick="document.getElementById('dislikebutton').submit()">Dislike This Post</a> {{fullpost.dislikes}}
                                    </div>
                                </div>
                                <!-- like form -->
                                <form id="likebutton" method="POST" action="/employee/blogpost/{{fullpost.id}}/preference/1">{% csrf_token %}
                                    <input type="hidden">
                                </form>
                                <!-- end like form -->

                                <!-- dislike form -->
                                <form id="dislikebutton" method="POST" action="/posts/{{fullpost.id}}/preference/2">{% csrf_token %}
                                <input type="hidden">
                                </form>
                                <!-- end dislike form -->
                                {% endfor %}
                            </div>
                        </div>
                    </div>

試試這個https://www.geeksforgeeks.org/handling-ajax-request-in-django/

$.ajax(
    {
        type:"GET",
        url: "/likepost",
        data:{
                 post_id: catid
        },
        success: function( data ) 
        {
            $( '#like'+ catid ).remove();
            $( '#message' ).text(data);
        }
     })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM