【问题标题】:Writing my first Django app编写我的第一个 Django 应用程序
【发布时间】:2018-12-08 11:58:53
【问题描述】:

我正在尝试学习 Django 并尝试https://docs.djangoproject.com/en/2.0/intro/tutorial03/ 的分步教程。

我已经完成了应用程序(嗯,直到第 7 部分)并且按预期工作(并且已在教程中解释)。

我面临的唯一问题(到目前为止)是当我尝试从“管理”页面导航到链接页面“查看站点”时,出现“找不到页面 (404)”错误。正在附上一张图片以使情况更清楚。

链接指向“http://127.0.0.1:8000/”,而它应该指向“http://127.0.0.1:8000/polls/”。当我在地址栏中(手动)添加路径的缺失部分时,会显示正确的页面(如预期的那样)。

我已尝试在此以及许多其他论坛上进行搜索,但找不到正确的解决方案。

我在 mac sierra 上使用 Django 2.0.6 和 Python 3.6.4。

如果能在这方面提供线索,我们将不胜感激。

谢谢

mysite/urls.py

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

mysite/polls/urls.py

from django.urls import path

from . import views

app_name = 'polls'
urlpatterns = [
    path('', views.IndexView.as_view(), name='index'),
    path('<int:pk>/', views.DetailView.as_view(), name='detail'),
    path('<int:pk>/results/', views.ResultsView.as_view(), name='results'),
    path('<int:question_id>/vote/', views.vote, name='vote'),
    ]

polls/template/polls/index.html

{% load static %}

<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_text }}</a></li>
    {% endfor %}
    </ul>
{% else %}
    <p>No polls are available.</p>
{% endif %}

Error on navigation at VIEW SITE

【问题讨论】:

  • 我真的不明白这是怎么回事。这只是一个教程,碰巧它只在 /polls 下定义了 URL。当然,在普通站点中,您会在站点的底部有一个主页,这就是该管理链接所指向的内容。
  • @Daniel Roseman 可能是“只是”一个教程,但要通过(网络上最完整的教程之一),这似乎不是疏忽的情况。管理站点和客户端站点可能是文章作者想要展示的站点。
  • @9769953 - 链接很旧,不适合当前版本的 Django!!

标签: python django


【解决方案1】:

你应该打开http://127.0.0.1:8000/polls/

不是

http://127.0.0.1:8000/.

如果你想使用http://127.0.0.1:8000/,那么你的路径应该是

from django.urls import include, path

urlpatterns = [
    path('', include('polls.urls')),
    path('admin/', admin.site.urls),
]

【讨论】:

    【解决方案2】:

    应该是这样的:

    path('', include('polls.urls')),
    

    不是这样的:

    path('polls/', include('polls.urls'))
    

    因为它应该是你网站的根 url

    【讨论】:

    • 感谢您的意见。是的,它正在工作(即“查看站点”链接将我带到带有问题的页面)。我现在认为这是正确的。但我还有一个疑问。如果我按照 T 教程中的说明进行操作(我认为),为什么这个特定代码会失败。因为我刚刚开始使用 Django,所以对我来说仍然更密集。即使在浏览了网络之后,也无法找到一个合理的理由说明为什么带有“polls/”的代码行失败了,而本教程的其余部分却完美无缺。将不胜感激在这方面的领导。感谢您的宝贵时间。
    【解决方案3】:

    这是我所做的(可能不是最优雅的解决方案,但效果很好)。

    我修改了“mysite/urls.py”文件,如图:

    from django.contrib import admin
    from django.urls import include, path
    
    urlpatterns = [
        path('', include('polls.urls')),
        path('polls/', include('polls.urls')),
        path('admin/', admin.site.urls),
    ]
    

    通过这种方式,我可以从 Django 管理页面上的“查看站点”链接(url:“127.0.0.1:8000”)以及位于其他地方的链接(url:“127.0 .0.1:8000/polls/")。

    感谢大家的帮助。

    PS。访问https://docs.djangoproject.com/en/2.0/topics/http/urls/ 可能对像我这样的学习者有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      • 2016-10-16
      • 2021-07-08
      • 2020-02-17
      • 2021-09-04
      • 2020-12-09
      相关资源
      最近更新 更多