Учебное пособие по Django, часть 1: неверный путь (404) - PullRequest
1 голос
/ 22 апреля 2019

Я настроил часть 1 учебника по django и получаю следующую ошибку «Страница не найдена (404)» при попытке получить доступ к приложению опросов:

Сообщение об ошибке

Page not found (404)
  Request Method:   GET
  Request URL:  http://proto.slc.venturedata.com/polls/
  Raised by:    polls.views.index

Using the URLconf defined in proto.urls, Django tried these URL patterns, in this order:
  1. polls/
  2. admin/

The empty path didn't match any of these.

You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.

Я использую Django 2.2, Python 3.7, Apache 2.4.6, mod-wsgi 4.6.5.

Мне удалось завершить урок, используя встроенный веб-сервер, но у меня начались проблемы, когда я добавил Apache и mod-wsgi в смесь. Вот мой код:

прото / urls.py:

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

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

опросы / urls.py

from django.urls import path
from . import views

urlpatterns = [
  path('', views.index, name='index'),
]    

опросы / urls.py

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

Единственное, что изменилось в settings.py - это TIMEZONE. Все остальное установлено по умолчанию.

Кажется, что-то не так с URL-адресами и соответствием пути. URL-адрес, который я использовал (proto.slc.venturedata.com/polls/), должен совпадать с путем 'polls /', но в сообщении об ошибке говорится, что этот путь пуст.

В ходе экспериментов я обнаружил, что не получил ошибку, если изменил proto / urls.py, заменив путь 'polls /' пустым путем: ''.

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

Я что-то упустил?


Включая нестандартную конфигурацию Apache, поскольку проблемы начались после того, как я настроил Django для использования Apache в качестве веб-сервера.

ServerName 10.0.10.249:80
<Directory />
  AllowOverride none
  Require all denied
</Directory>
DocumentRoot "/var/www/html"

WSGIPythonPath /var/local/www/proto/

<VirtualHost *:80>
    DocumentRoot "/var/local/www/proto"
    ServerName proto.slc.venturedata.com

    <Directory "/var/local/www/proto">
            Require all granted
    </Directory>

    WSGIScriptAlias /polls /var/local/www/proto/proto/wsgi.py
</VirtualHost>

1 Ответ

1 голос
/ 23 апреля 2019

Даниэль Роузман предложил включить мою конфигурацию Apache.Когда я добавлял параметры конфигурации в этот пост, я увидел ошибку в конфигурации виртуального хоста.WSGIScriptAlias ​​является виновником.

Текущий:

WSGIScriptAlias /polls /var/local/www/proto/proto/wsgi.py

Должен быть:

WSGIScriptAlias / /var/local/www/proto/proto/wsgi.py

После внесения изменений в конфигурацию учебник работает должным образом.

Иногда просто нужно, чтобы кто-то оглянулся через плечо.

...