没有反向匹配错误,不知道是什么原因

时间:2018-10-26 05:40:06

标签: django django-urls

我在渲染视图以编辑配置文件时遇到一些麻烦。我不确定是什么原因造成的。 这是我的模型。py

class UserProfile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
address = models.CharField(max_length=100)

def __str_(self):
    return self.user.username

@receiver(post_save, sender=settings.AUTH_USER_MODEL)
def create_user_profile(sender, instance, created, **kwargs):
    if created:
        UserProfile.objects.create(user=instance)

@receiver(post_save, sender=settings.AUTH_USER_MODEL)
def save_user_profile(sender, instance, **kwargs):
    instance.userprofile.save()

我的views.py

class ProfileEditView(generic.UpdateView):
    model = UserProfile
    form_class = UserProfileForm
    template_name = 'user_profile.html'

    def get_object(self,*args, **kwargs):
        user = get_object_or_404(settings.AUTH_MODEL_USER, pk=self.kwargs['pk'])
        return user.userprofile

    def get_sucess_url(self, *args, **kwargs):
        return reverse('edit-user')

我的urls.py是

 url(r'^profile/(?P<pk>\d+)/$',views.ProfileEditView.as_view(),name='edit-user')

在我写的html代码中

<a class="dropdown-item" href="{% url 'edit-user' %}"> Profile </a>

除了带有错误消息的NoReverseMatch的运行时错误外,它没有任何错误

  

反向查找“ edit-user”,未找到任何参数。尝试了1种模式:['用户/个人资料/(?P \ d +)/ $']

1 个答案:

答案 0 :(得分:1)

问题出在这一行,

<a class="dropdown-item" href="{% url 'edit-user' ## missing ## %}"> Profile </a>

根据url在模板中的位置添加user.pkuserprofile.user.pk

<a class="dropdown-item" href="{% url 'edit-user' userprofile.user.pk %}"> Profile </a>

<a class="dropdown-item" href="{% url 'edit-user' user.pk %}"> Profile </a>

根据标记在HTML中的位置进行选择。