找不到页面 (404) 请求方法:GET 请求 URL:http://127.0.0.1:8000/

Posted

技术标签:

【中文标题】找不到页面 (404) 请求方法:GET 请求 URL:http://127.0.0.1:8000/【英文标题】:Page not found (404) Request Method: GET Request URL: http://127.0.0.1:8000/ 【发布时间】:2016-10-30 17:14:07 【问题描述】:

我正在关注 django 文档并制作了一个简单的投票应用程序。我遇到了以下错误:

Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:
    ^polls/
    ^admin/
The current URL, , didn't match any of these."

settings.py

ROOT_URLCONF = 'mysite.urls'

mysite/mysite/urls.py

from django.conf.urls import include,url
from django.contrib import admin
urlpatterns = [
    url(r'^polls/',include('polls.urls')),
    url(r'^admin/', admin.site.urls),]

mysite/polls/urls.py

from django.conf.urls import url

from . import views
app_name= 'polls' 
urlpatterns=[ 
    url(r'^$',views.IndexView.as_view(),name='index'),
    url(r'^(?P<pk>[0-9]+)/$',views.DetailView.as_view(), name='detail'),
    url(r'^(?P<pk>[0-9]+)/results/$',views.ResultsView.as_view(),name='results'),
    url(r'^(?P<question_id>[0-9]+)/vote/$',views.vote,name='vote'),]

mysite/polls/views.py

from django.shortcuts import get_object_or_404,render
from django.http import HttpResponseRedirect, HttpResponse
from django.core.urlresolvers import reverse
from django.views import generic
from django.utils import timezone
from django.template import loader
from .models import Choice,Question
from django.template.loader import get_template
#def index(request):
#   return HttpResponse("Hello, world. You're at the polls index")
class IndexView(generic.ListView):
    template_name='polls/index.html'
    context_object_name='latest_question_list'
    def get_queryset(self):
        """Return the last five published questions."""
        return Question.objects.filter(pub_date__lte=timezone.now()).order_by('-pub_date')[5:]


class DetailView(generic.DetailView):
    model=Question
    template_name='polls/detail.html'
    def get_queryset(self):
        """
        Excludes any questions that aren't published yet.
        """
        return Question.objects.filter(pub_date__lte=timezone.now())
class ResultsView(generic.DetailView):
    model= Question
    template_name ='polls/results.html'

def vote(request, question_id):
    question=get_object_or_404(Question, pk=question_id)
    try:
        selected_choice= question.choice_set.get(pk=request.POST['choice'])
    except (KeyError, Choice.DoesNotExist):
        return render(request, 'polls/details.html',
            
            'question':question,
            'error_message' : "You didn't select a choice" ,

            )  
    else:
        selected_choice.votes+=1
        selected_choice.save()
        return HttpResponseRedirect(reverse('polls:results', args=(question.id,)))

index.html

<!DOCTYPE HTML >
% load staticfiles %
<html>
<body>
<link rel="stylesheet" type="text/css" href="% static 'polls/style.css' %" />
% if latest_question_list %
    <ul>
    % for question in latest_question_list %
        <li><a href="% url 'polls:detail' question.id %">question.question_test 
    </a></li>
        % endfor %
        </ul>
    % else %
        <p>No polls are available.</p>
    % endif %
</body>
</html>

此链接http://127.0.0.1:8000/polls/ 显示一个带有 3 个项目符号的空白页。 (我的数据库中有 3 个问题,它们的 ID 是 5,6,7,因为我一直在删除和添加问题。)

我的管理员工作正常!

我是 Django 新手,一直在四处寻找和询问,现在已经坚持了一段时间。

【问题讨论】:

现在你已经发布了你的模板,我可以看到你有一个错字。应该是question.question_text,而不是question.question_test 感谢@Alasdair 先生您宝贵的时间。我不知道这个文件中的错误.. 这是我在选择选项后单击投票时遇到的新错误!异常类型:TypeError 异常值:vote() got an unexpected keyword argument 'pk' 异常位置:/usr/local/lib/python3.4/dist-packages/django/core/handlers/base.py in get_response,第 147 行 这是一个不同的问题,您应该提出一个新问题而不是编辑这个问题。 好的先生谢谢你:) @Alasdair 【参考方案1】:

您在http://127.0.0.1:8000/ 上收到 404,因为您尚未为该网址创建任何网址格式。您已经包含了 url http://127.0.0.1:8000/polls/,因为您已经包含了投票网址

url(r'^polls/',include('polls.urls')),

空的项目符号表明您的polls/index.html 模板存在问题。看起来您有错字,并且输入了 question.question_test 而不是 question.question_text 。确保它与tutorial 3 中的模板完全匹配:

% if latest_question_list %
    <ul>
    % for question in latest_question_list %
        <li><a href="/polls/ question.id /"> question.question_text </a></li>
    % endfor %
    </ul>
% else %
    <p>No polls are available.</p>
% endif %

【讨论】:

【参考方案2】:

确保您的代码中没有错字。在引号之间放置空格也会导致此错误。只要确保您输入的是path('',include('home.urls')) 而不是path(' ',include('home.urls'))

注意:这里 home.urls 是我在 Django 中的应用程序的名称

【讨论】:

以上是关于找不到页面 (404) 请求方法:GET 请求 URL:http://127.0.0.1:8000/的主要内容,如果未能解决你的问题,请参考以下文章

找不到页面 (404) 请求方法:GET 尝试单击另一个 .html 文件

Django 错误:找不到页面 (404) 请求方法:GET 请求 URL:http://127.0.0.1:8000/helpdesk/login/?next=/

找不到页面 (404) 请求方法:POST 请求 URL:http://127.0.0.1:8000/accounts/signup/signup

Ruby Rails在HTTP GET请求中找不到404

Ajax请求返回结果为404问题

在 django、pycharm 中找不到页面?