编写我的第一个Django应用

时间:2018-06-29 10:01:49

标签: python django

我正在尝试学习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'),
    ]

投票/模板/投票/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

3 个答案:

答案 0 :(得分:0)

应该是这样的:

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

不是这样的:

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

因为它应该是您网站的根网址

答案 1 :(得分:0)

您应该打开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 :(得分:0)

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

我已修改“ 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 Admin页面上的“查看网站”链接(URL:“ 127.0.0.1:8000”),也可以通过其他位置的链接(URL:“ 127.0”)访问“民意调查”页面.0.1:8000 / polls /")。

感谢所有帮助。

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