【问题标题】:No Reverse Match error No idea what is causing没有反向匹配错误不知道是什么原因
【发布时间】:2018-10-26 05:40:05
【问题描述】:

我在渲染用于编辑配置文件的视图时遇到了一些问题。我不确定是什么原因造成的。 这是我的models.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()

我的意见.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 种模式:['users/profile/(?P\d+)/$']

【问题讨论】:

  • 这是因为您没有将任何 pk 传递给 url,请发布您的视图,该视图导致 html 是代码
  • Profile 一个 noreversematch 错误,但现在它给了我 Reverse for 'edit-user' with keyword arguments '{'pk': ''}' not found。如何正确通过pk?
  • 问题需要清楚你在 html 中得到了什么上下文,所以发布渲染这个 html 的视图

标签: django django-urls


【解决方案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中出现的位置来选择。

【讨论】:

  • 太棒了。您可以接受答案,以免其他人不必要地点击此问题链接。
猜你喜欢
  • 2020-12-18
  • 1970-01-01
  • 1970-01-01
  • 2018-04-12
  • 1970-01-01
  • 2015-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多