最奇怪的是,我只是从程序的工作部分复制了以下代码,只是交换了名称,所有基础知识都相同。
错误:
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(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(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/