如何使用Django模板引擎的标记更改链接?

2024-10-03 23:28:07 发布

您现在位置:Python中文网/ 问答频道 /正文

对不起,我不太懂英语。 我正在研究以下系统。 但我不知道如何将链接从follow改为not more follow

链接(template.html)

{% if request.user == user.following %}
       <a href="{% url 'remove-follower' pk=user.pk id=request.user.pk %}">no longer follow</a>
{% endif %}
{% if request.user == user.following %}
       <a href="{% url 'add-follower' pk=user.pk id=request.user.pk %}">Follow</a>
{% endif %}

models.py

from django.db import models
from django.contrib.auth import get_user_model

User = get_user_model()

class Follower(models.Model):
    follower = models.ForeignKey(User, on_delete=models.PROTECT, related_name='following')
    following = models.ForeignKey(User, on_delete=models.PROTECT, related_name='followers')

    class Meta:
        unique_together = ('follower', 'following')

    def __str__(self):
        return u'%s follow %s' % (self.follower, self.following)

views.py

def AddFollowerView(request, pk, id):
        user = get_object_or_404(User, pk=pk)
        userFollow = get_object_or_404(User, id=id)
        Follower.objects.create(follower=user, following=userFollow)
        return HttpResponseRedirect('/')

def RemoveFollowerView(request, pk, id):
        user = get_object_or_404(User, pk=pk)
        userFollow = get_object_or_404(User, id=id)
        Follower.objects.filter(follower=user, following=userFollow).delete()
        return HttpResponseRedirect('/')

url.py

path('follow/<int:pk>/<int:id>/', AddFollowerView, name="add-follower"),
    path('no-longer-follow/<int:pk>/<int:id>/', RemoveFollowerView, name="remove-follower"),

提前谢谢你


Tags: ornameidgetobjectmodelsrequestint
1条回答
网友
1楼 · 发布于 2024-10-03 23:28:07

你是说

{% if request.user == user.following %}
  <a href="{% url 'remove-follower' pk=user.pk id=request.user.pk %}">no longer follow</a>
{% else %}
  <a href="{% url 'add-follower' pk=user.pk id=request.user.pk %}">Follow</a>
{% endif %}

因此,如果用户正在跟随另一个用户,则用户可以选择删除跟随者。否则,用户可以选择跟随用户

相关问题 更多 >