【问题标题】:Reverse for 'like_majstor' with arguments '('',)' not found. 1 pattern(s) tried: ['likeProfile/(?P<pk>[0-9]+)$'] problem未找到带有参数 '('',)' 的 'like_majstor' 的反向操作。尝试了 1 种模式:['likeProfile/(?P<pk>[0-9]+)$'] 问题
【发布时间】:2021-06-13 13:40:17
【问题描述】:

我正在尝试为我的用户添加 like 按钮。我的AbstractUser 模型中有两种类型的用户,由user_type 分隔。我想要 like 按钮的这种行为:KORISNIK 类型的用户可以按MAJSTORI 类型为用户点赞。 但是当我尝试运行我的解决方案时,我收到了这个错误:

未找到带有参数“(”,)”的“like_majstor”的反向。尝试了 1 种模式:['likeProfile/(?P[0-9]+)$'] 问题

models.py

class CustomKorisnici(AbstractUser):
    MAJSTOR = '1'
    KORISNIK = '2'
    USER_TYPE_CHOICE = (
        (MAJSTOR, 'majstor'),
        (KORISNIK, 'korisnik')
    )
    user_type = models.CharField(max_length=100,blank=True,choices=USER_TYPE_CHOICE)
    username = models.CharField(max_length=100,unique=True)
    ...
    def __str__(self):
        return self.username + ' | ' +self.last_name + ' | ' + self.first_name + ' | ' + str(self.phone_number) + ' | ' + self.user_type + ' | ' + self.email+ ' | ' + str(self.id)

class LikeButton(models.Model):
    user = models.ForeignKey(CustomKorisnici, on_delete=models.CASCADE)
    likes = models.ManyToManyField(CustomKorisnici,related_name='profile_like')

views.py

def LikeProfile(request,pk):
    like = get_object_or_404(LikeButton, id=request.POST.get('majstori_id'))
    like.likes.add(request.user)
    return HttpResponseRedirect(reverse('majstori_profile', args=[str(pk)]))

class MajstoriProfile(DetailView):
    model = CustomKorisnici
    context_object_name = 'majstori'
    template_name = 'majstori_profile.html'

    def get_context_data(self, *args, **kwargs):
        user = CustomKorisnici.objects.all()
        context = super(MajstoriProfile, self).get_context_data(*args, **kwargs)
        majstori= get_object_or_404(CustomKorisnici, id=self.kwargs['pk'])
        context['majstori'] = majstori
        return context

urls.py

 path('likeProfile/<int:pk>', LikeProfile, name="like_majstor"),

模板:

<form action="{% url 'like_majstor' majstor.pk %}" method="post">
    {% csrf_token %}
    <button type="submit" name="majstor_id" value="{{ majstor.pk }}" class="btn">Like</button>
</form>

【问题讨论】:

  • 请显示呈现给定模板的另一个视图。
  • 应该是{% url 'like_majstor' majstori.pk %}?注意i。你已经设置了context_object_name = 'majstori'

标签: django django-views django-templates django-urls


【解决方案1】:

你的动作属性应该是

{% url 'like_majstor' majstori.pk %}

看起来你错过了一个“我”。

【讨论】:

    【解决方案2】:

    在网址中试试

    url(r'^likeProfile/(?P[0-9].+)/$')
    

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 2020-02-06
      • 2017-11-05
      • 2019-09-07
      • 2020-08-16
      • 1970-01-01
      • 2023-03-28
      • 2021-04-24
      • 1970-01-01
      相关资源
      最近更新 更多