包含收藏按钮后的 NoReverseMatch

Posted

技术标签:

【中文标题】包含收藏按钮后的 NoReverseMatch【英文标题】:NoReverseMatch after include Favorite button 【发布时间】:2019-04-05 03:01:27 【问题描述】:

首先感谢您的关注。 我对 django 框架很陌生,并且遵循教程。虽然当我尝试在我的 detail.html 中包含收藏夹的输入按钮时,我得到了这个错误:

模板渲染期间出错 在模板 C:\Users\leo8\Desktop\Lucas\c2view03\webdeve\templates\detail.html 中,第 8 行出错

找不到带有参数“(”,)”的“收藏夹”。尝试了 1 种模式:

['webdeve/(?P[0-9]+)/favorites/$']

1   <img src=" dream.imagem ">
2   <h2> dream.titulo   dream.objetivo </h2>
3   
4   % if error_message %
5       <p><strong> error_message </strong></p>
6   % endif %
7   
8   <form action="% url 'webdeve:favorites' Dreams.id %" method="post">
9       % csrf_token %
10      % for wich in dream.wich_set.all %
11          <input type="radio" id="wich forloop.counter " name="wich" value=" titulo.id "/>
12          <label for="wich forloop.counter ">
13               wich.make 
14              % if wich.favorites %
15                  <img src="https://cdn2.iconfinder.com/data/icons/aspneticons_v1.0_Nov2006/add_16x16.gif" />
16              % endif %
17          </label><br>
18      % endfor %

这些是我的看法:

from .models import Dreams, Wich
from django.shortcuts import render, get_object_or_404

app_name = 'webdeve'


def index(request):
    all_dreams = Dreams.objects.all()
    contexto = 'all_dreams': all_dreams
    return render(request, 'index.html', contexto)


def detail(request, Dreams_id):
    #dream = Dreams.objects.get(pk=Dreams_id)
    dream = get_object_or_404(Dreams, pk=Dreams_id)
    return render(request, 'detail.html', 'dream': dream)


def favorites(request, Dreams_id):
    dream = get_object_or_404(Dreams, pk=Dreams_id)
    try:
        selected_wich = dream.wich_set.get(pk=request.POST['make'])
    except (KeyError, Wich.DoesNotExist):
        return render(request, 'detail.html', 
            'dream': dream,
            'error_message': "no wich selected"
        )
    else:
        selected_wich.favorites = True
        selected_wich.save()
        return render(request, 'detail.html', 'dream': dream)

和 myapp.urls

from django.conf.urls import url
from webdeve import views

app_name = 'webdeve'

# Dreams

urlpatterns = [
    url(r'^$', views.index, name='index'),

# Dreams/detail

    url(r'^(?P<Dreams_id>[0-9]+)/$', views.detail, name='detail'),

# Dreams/detail/favoriteS

    url(r'^(?P<Dreams_id>[0-9]+)/favorites/$', views.favorites, name='favorites'),
]

【问题讨论】:

【参考方案1】:

您永远不会从您的view 向您的form 发送Dreams,因此Dreams.id 不存在。在您的模板中尝试dream.id

【讨论】:

dream = get_object_or_404(Dreams, pk=Dreams_id) 和:return render(request, 'detail.html', 'dream': dream) 怎么样 Dream != dream。 Python 区分大小写。上下文引号内的内容是模板中使用的名称。 是的,它成功了,非常感谢,我遇到了一个没有找到的问题,但我会尝试解决它。再次非常感谢你,卡尔; 同样的问题。您不会在上下文中发送“wich”

以上是关于包含收藏按钮后的 NoReverseMatch的主要内容,如果未能解决你的问题,请参考以下文章

怎么复制信息.复制后如何使用

选择单选按钮后的下拉列表

“加入收藏”功能

如何在网页,页嵌页HTML中加入一个后退按钮?

动画后的iOS旋转手势

IE收藏夹备份后的bookmark.htm中的中文为乱码