1

我一直在现有的Django项目中制作一个Django应用程序。我想测试的是,我的新构建的应用程序是否从我的应用程序的views.pay中编写的视图向我的浏览器发送了正确的HttpResponse文本对象。这些网址已经正确配置,并且已经包含在项目中。此外,该项目已将我的应用程序添加到其安装的应用程序。Django应用程序抛出404错误,尽管发送了适当的HttpResponse表单视图

我的项目urls.py有:

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

我在app 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_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。所以,不是问题。

注2:我的应用程序部署在AWS EC2中,但我不认为这是原因。

注意:不要打扰我的网址,因为我打算一旦越过这一步就构建一个更大的应用程序。

+0

您的项目还有什么是urls.py? – Oli

+0

在404页面上,是否说:'Django尝试了这些URL模式?如果是这样,请将输出添加到您的问题。 – Alasdair

+0

@Oli这是一个商业项目,我不应该显示所有这些项目。但是,你能告诉我他们怎么可能有关系吗?我正在使用userena等第三方应用程序。它有效吗?截至目前,我只需要一个简单的请求和一个简单的响应。中间件是否影响我的HttpResponse对象?不应该是这样的情况,因为安装了相同的中间件,我已经在另一个清洁项目中尝试生成这种类型的httpresponse,并且它不像这个那样生成了正确的! –

回答

0

尝试将url(r'^loginapi/', include('loginapi.urls')),移动到根urls.py中模式的顶部,以确保它不被其他东西遮挡。

作为一个例子,考虑下面的URL模式:

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

/loginapi/的请求将被正则表达式^'相匹配,并且由catch_all视图,而不是预期的loginapi视图处理。您可以通过将catch_all url模式移动到其他模式下解决问题。

+0

只是好奇,如果有的话,可能会有什么安全隐患? –

+0

我不确定你的意思。在顶部添加网址格式的风险是,它意外地隐藏了由其他网址格式处理的现有网址。这是一个错误,但它不一定是安全问题。在你的情况下,'^ loginapi /'是非常具体的,所以你不太可能会意外地隐藏另一个url模式。但是,我不知道您的网址格式的内容,因此您需要检查。 – Alasdair

+0

将我的网址带入其他网址的顶部。为什么有人会使用一些配置来隐藏其他URLs,就像我的情况发生在我的情况一样? –

相关问题