1

Я делаю приложение Django в рамках существующего проекта Django. Все, что я хотел проверить, заключается в том, отправляет ли мое недавно созданное приложение правильный текстовый объект HttpResponse в мой браузер из представления, которое я написал в views.pay моего приложения. URL-адреса были правильно настроены и также включены в проект. Кроме того, в проект добавлено мое приложение к установленным приложениям.Приложение Django, бросающее ошибку 404, несмотря на правильное представление формы отправки HttpResponse

Мой urls.py в проекте:

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

Мой urls.py в приложении:

urlpatterns = patterns('', 
     url(r'^$', views.authenticateRemoteUser, name = 'loginAPIUrl'), 
    ) 

Моих установленных приложений в settings.py файлов проекта есть:

INSTALLED_APPS += (
    'core', 
    'people', 
    'places', 
    'media', 
    #Just added loginapi app to test my HTTP post request 
    'loginapi', 
) 

мой взгляд выглядит следующим образом:

from django.http import HttpResponse 

def authenticateRemoteUser(request): 
     return HttpResponse("hello world") 

Дополнительные данные ::

Middleware заключаются в следующем:

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
) 

Что я получаю в браузере выглядит следующим образом:

Page not found (404) 
Request Method: GET 
Request URL: http://www.example.com/loginapi/ 

(Не можете размещать изображения без 10 репутации)

Примечание: www.example.com используется для местного использования и был добавлен на мои хосты для моего сервер ip. Итак, не проблема.

Note2: Мое приложение развернуто в AWS EC2, но я не думаю, что это причина.

Note3: Не беспокойтесь о моем URL-адресе, поскольку я намерен создать более крупное приложение после того, как этот шаг будет пересечен.

+0

Что еще находится в вашем проекте? Urls.py? – Oli

+0

На странице 404 он говорит: «Django пробовал эти шаблоны URL»? Если да, добавьте вывод в свой вопрос. – Alasdair

+0

@Oli это коммерческий проект, и я не должен отображать их все. Но не могли бы вы рассказать мне, как они могут быть связаны? Я использую сторонние приложения, такие как userena. Это эффект? Все, что я хочу, это просто простой запрос и простой ответ, на данный момент. Является ли промежуточное ПО для моего объекта HttpResponse? Это не должно быть так, как с одним и тем же промежуточным программным обеспечением, которое я попробовал в другом чистом проекте, генерирующем httpresponse такого рода, и он был создан правильно, в отличие от этого! –

ответ

0

Попробуйте переместить url(r'^loginapi/', include('loginapi.urls')), на самую вершину шаблонов в вашем корне urls.py, чтобы убедиться, что он не затенен чем-то другим.

В качестве примера, рассмотрим следующие urlpatterns:

urlpatterns = [ 
    url(r'^', views.catch_all), 
    url(r'^loginapi/', include('loginapi.urls')) 
] 

Запрос на /loginapi/ будет сопровождаться регулярным выражением ^' и обрабатываются catch_all зрения вместо предполагаемого зрения loginapi. Вы можете устранить проблему, перемещая шаблон url catch_all ниже других.

+0

Любопытно, каковы могут быть последствия для безопасности, если они есть? –

+0

Я не уверен, что вы имеете в виду. Риск добавления шаблона URL-адреса наверху заключается в том, что он случайно затеняет существующие URL-адреса, которые обрабатываются другими шаблонами URL-адресов. Это ошибка, но это не обязательно проблема безопасности. В вашем случае '^ loginapi /' довольно специфичен, поэтому кажется маловероятным, что вы случайно закроете другой шаблон url. Тем не менее, я не знаю содержание ваших шаблонов URL-адресов, поэтому вам решать проверить. – Alasdair

+0

Извлеките мой URL-адрес в TOP других URL-адресов. Зачем кому-то использовать какую-то конфигурацию для теневых других URLS, как это было в моем случае, когда мой был внизу? –