gpt4 book ai didi

python - 在 Django 中获取 NoReverseMatch 错误

转载 作者:太空宇宙 更新时间:2023-11-04 03:46:24 25 4
gpt4 key购买 nike

最奇怪的是,我只是从程序的工作部分复制了以下代码,只是换了个名字,所有的基础都是一样的。

错误:

NoReverseMatch at /profile/1/
Reverse for 'follow_user_add' with arguments '(1,)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['profile/follow/']

ulrs.py:

url(r'^profile/', include('basics.urls')),

基础/urls.py:

url(r'^follow/', 'basics.views.add_user_follower', name='follow_user_add'),
url(r'^(?P<pk>\d+)/', UserDetailView.as_view(), name='users_detail'),

url(r'^', UserListView.as_view(), name='users_list'),

views.py:

class UserDetailView(DetailView):
model = User
template_name = 'basics/profile_detail.html'
context_object_name = 'user_object'

def get_context_data(self, **kwargs):
context = super(UserDetailView, self).get_context_data(**kwargs)
context["member_list"] = Member.objects.filter(user=self.object)
return context

def add_user_follower(request, pk ):
if request.method == 'POST':
form = TempForm(request.POST or None)
if form.is_valid():
...
return HttpResponseRedirect(followed_user.get_url())

else:
form = TempForm() # An unbound form

return render(request, 'basics/profile_detail.html', {
'form': form,
})

和模板:

<form action="{% url 'follow_user_add' user_object.id %}"  method="post">{% csrf_token %}
<input type="submit" value="follow" />
</form>

最佳答案

我刚刚弄清楚你的错误,你给的 url 是这样的,

url(r'^follow/', 'basics.views.add_user_follower', name='follow_user_add'),

但是在这样的模板中,

action="{% url 'follow_user_add' user_object.id %}"

所以上面的url是这样匹配的/profile/follow/1/ .但是你的网址/profile/follow/ .

在这样的 View 中,

def add_user_follower(request, pk ):

你得到了这个错误,

Reverse for 'follow_user_add' with arguments '(1,)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['profile/follow/']

我的解决方案是将 url 与 pk 进行匹配,但是您没有那个模式。所以你需要这样说,

url(r'^follow/(?P<pk>\d+)/$', 'basics.views.add_user_follower', name='follow_user_add'),

注意:您基本上错过了 (?P<pk>\d+)模式。希望对您有所帮助。

更新:以这种方式更改 url,

url(r'^follow/(?P<pk>\d+)/$', 'basics.views.add_user_follower', name='follow_user_add'),
url(r'^(?P<pk>\d+)/$', UserDetailView.as_view(), name='users_detail'),

url(r'^$', UserListView.as_view(), name='users_list'),

关于python - 在 Django 中获取 NoReverseMatch 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23645938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com