python - 在 Django 中出现 NoReverseMatch 错误

标签 python django

最奇怪的是,我只是从程序的工作部分复制了以下代码,只是交换了名称,所有基础知识都相同。

错误:

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/

相关文章:

Python Telegram Bot - 如何更新我的机器人发送的最后一条消息的文本

python - 如何以脆皮形式在日期字段上显示日期选择器日历?

Python 3 list(dictionary.keys()) 引发错误。我究竟做错了什么?

python - 我可以在 django 中使用 python 操作系统/系统模块吗

python - WTForms 等同于 &lt;input type ="datetime-local">

python - 生成特定格式的数字列表

python - suds 软件包安装问题

python2 re.sub : abort catastrophic pattern on backtracking

python - 如何在单个查询集中组合两个 django 模型对象值

python - Django Heroku,服务器不支持 SSL,但需要 SSL