最奇怪的是,我只是从程序的工作部分复制了以下代码,只是换了个名字,所有的基础都是一样的。
错误:
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'),
