【问题标题】:Why do i get reverse match error in get_absolute_url method?- Django为什么我在 get_absolute_url 方法中出现反向匹配错误?- Django
【发布时间】:2017-07-06 18:03:56
【问题描述】:

views.py

class ProfileView(DetailView):
    model = User
    template_name ="profile/profile_view.html"

class ProfileEdit(UpdateView):
    model = User
    form_class = ProfileForm
    template_name="profile/profile_new.html"

models.py

#.... models
def get_absolute_url(self):
    return reverse('user:user_profile', kwargs={ "slug": self.slug })

urls.py

url(r'^(?P<slug>[\w.@+-]+)/edit/$', ProfileEdit.as_view(), name='profile_edit'),
url(r'^(?P<slug>[\w.@+-]+)/$', ProfileView.as_view(), name='user_profile'),

未找到带有参数“()”和关键字参数“{'slug': 'rahul'}' 的“user_profile”的反向操作。尝试了 0 个模式:[]

我不明白我得到了正确的 slug 值,但是将它传递给 url 模式的正确方法是什么?

【问题讨论】:

  • 您的应用是否在包含这些网址的已安装应用设置中?
  • 是的!详细视图和更新视图都可以正常工作..在更新视图中的发布请求之后我想重定向到详细视图
  • user 命名空间肯定存在? (请包括相关的基本网址)
  • url(r'^', include('user.urls', name='user')),

标签: python django


【解决方案1】:

使用include 时,您需要指定namespace,而不是name

url(r'^', include('user.urls', namespace='user'))

【讨论】:

  • 它在模型中工作,但我如何在 settings.py LOGIN_REDIRECT_URL = ('profile:user_profile', kwargs={ "slug": self.slug }) 中做同样的事情
  • @Rahul - 那是一个单独的问题(你应该提出一个新问题。正常的解决方案是reverse_lazy,但由于没有自我,所以这行不通
  • 写自定义loginview而不是默认auth_views.login是不是更好
  • 这是一个单独的问题,您应该针对它提出一个新问题,其中包含您已经尝试和研究过的内容。
猜你喜欢
  • 1970-01-01
  • 2020-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-28
  • 2020-01-29
相关资源
最近更新 更多