首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >投票地址为/ NoReverseMatch /1/vote/

投票地址为/ NoReverseMatch /1/vote/
EN

Stack Overflow用户
提问于 2015-06-19 17:49:41
回答 2查看 2.3K关注 0票数 2

堆栈溢出有三个问题,error.In略有不同,我的参数也被传递了,但我就是不知道错误是什么?

代码语言:javascript
复制
NoReverseMatch at /polls/1/vote/
    Reverse for 'result' with arguments '(1,)' and keyword arguments '{}' not found. 0 pattern(s) tried: []
    Request Method: POST
    Request URL:    http://localhost:8000/polls/1/vote/
    Django Version: 1.8.2
    Exception Type: NoReverseMatch
    Exception Value:    
    Reverse for 'result' with arguments '(1,)' and keyword arguments '{}' not found. 0 pattern(s) tried: []
    Exception Location: C:\Python27\Lib\site-packages\django\core\urlresolvers.py in _reverse_with_prefix, line 496
    Python Executable:  C:\Python27\python.exe

这是我的polls/views.py

代码语言:javascript
复制
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse, Http404, HttpResponseRedirect
from django.core.urlresolvers import reverse

from .models import Movie, Rating
# Create your views here.

def detail(request, movie_id):
    try:
        movie = get_object_or_404(Movie,pk = movie_id)
    except Movie.DoesNotExist:
        raise Http404("Movie not found")
    return render(request, 'polls/detail.html', {'movie': movie})

def result(request, movie_id):
    movie = get_object_or_404(Movie, pk = movie_id)
    return render(request, 'polls/result.html', {'movie': movie})

def vote(request, movie_id):
    p = get_object_or_404(Movie, pk = movie_id)
    try:
        selected_rating = p.rating_set.get(pk=request.POST['rating'])
    except(KeyError, Rating.DoesNotExist):
        return render(request, 'polls/detail.html', {'movie':p, 'error_message':"you didn't select a rating",})
    else:
        selected_rating.votes += 1
        selected_rating.save()
        return HttpResponseRedirect(reverse('polls:result', args=(p.id,)))

如果你需要任何额外的文件,请问我,我会把它们放在这里。

这是detail.html

代码语言:javascript
复制
<h1> {{movie.movie_text}}</h1>

{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}
<form action="{% url 'polls:vote' movie.id %}" method="post">
{% csrf_token %}
{% for rating in movie.rating_set.all %}
    <input type="radio" name="rating" id="rating{{ forloop.counter }}" value="{{ rating.id }}" />
    <label for="rating{{ forloop.counter }}">{{ rating.rating_number }}</label><br />
{% endfor %}
<input type="submit" value="Vote" />
</form>

这是result.html

代码语言:javascript
复制
<h1>{{movie.movie_text}}</h1>

<ul>
    {% for rating in movie.rating_set.all%}
    <li>{{rating.rating_text}} -- {{rating.votes }} vote{{rating.votes|pluralize}}</li>
    {% endfor %}
</ul>

<a href="{% url 'polls:detail' movie.id %}">Vote Again? </a>

以下是polls/urls.py

代码语言:javascript
复制
from django.conf.urls import url

from . import views

urlpatterns = [
    #ex: /polls/
    url(r'^$', views.index, name = 'index'),
    #ex /polls/5/
    url(r'^(?P<movie_id>[0-9]+)/$', views.detail, name='detail'),

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

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

这是mysite/urls.py

代码语言:javascript
复制
from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^polls/', include('polls.urls', namespace='polls')),
]
EN

回答 2

Stack Overflow用户

发布于 2015-06-19 17:59:44

您没有名为"polls:result“的视图,您有一个名为"polls:results”的视图。更改polls/urls.py中的名称,或在vote视图中调用reverse时使用的值。

票数 1
EN

Stack Overflow用户

发布于 2022-01-22 06:35:13

在我的例子中,我得到这个错误是因为我没有返回重定向,而是在post成功时尝试呈现'detail.html‘模板

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30935053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档