Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么django在用户登录并显示flatpage后返回301和302作为服务器响应代码?_Django_Http_Response.redirect_Http Response Codes_Django Flatpages - Fatal编程技术网

为什么django在用户登录并显示flatpage后返回301和302作为服务器响应代码?

为什么django在用户登录并显示flatpage后返回301和302作为服务器响应代码?,django,http,response.redirect,http-response-codes,django-flatpages,Django,Http,Response.redirect,Http Response Codes,Django Flatpages,我正在创建一个django应用程序。用户登录并显示由flatpages应用程序管理的静态网页 以下是来自dev服务器的典型状态消息: [15/Aug/2013 18:43:16] "GET / HTTP/1.1" 200 1263 [15/Aug/2013 18:43:23] "POST / HTTP/1.1" 302 0 [15/Aug/2013 18:43:23] "GET /home HTTP/1.1" 301 0 [15/Aug/2013 18:43:23] "GET /home

我正在创建一个django应用程序。用户登录并显示由flatpages应用程序管理的静态网页

以下是来自dev服务器的典型状态消息:

 [15/Aug/2013 18:43:16] "GET / HTTP/1.1" 200 1263
 [15/Aug/2013 18:43:23] "POST / HTTP/1.1" 302 0
 [15/Aug/2013 18:43:23] "GET /home HTTP/1.1" 301 0
 [15/Aug/2013 18:43:23] "GET /home/ HTTP/1.1" 200 4529
  • 第一行是位于/的登录页面。服务成功,代码200
  • 第二行是表单输入。服务器响应代码是302,这意味着页面被临时移动
  • 第三行是尝试检索不存在的页面(“/home”),因为底层页面由flatpages提供服务。301服务器响应代码表示页面已永久移动
  • 第四行是从flatpages成功交付内容(“/home”)
为什么服务器用302响应put请求

是什么导致了第三条线?为什么要发出这个信息?这不应该是被flatpages中间件捕获的东西吗?我的web客户端是否在第四行下方发送请求?它怎么知道要这样做

我想最重要的问题是:我做错什么了吗

谢谢你的帮助

url.py

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', 'django.contrib.auth.views.login'),
    url(r'^logout$', 'guide.views.logout_view'),
    # other patterns
    (r'', include('django.contrib.flatpages.urls')),
)
views.py

def home(request):
    if request.user.is_authenticated() == False:
        return HttpResponseRedirect('/')
    return HttpResponseRedirect('/home/')
摘自settings.py

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

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.flatpages',
    'django.contrib.admin',
    'guide',
)

我看不到主视图的url模式。但可能是缺少的斜杠使django发出了一个自动重定向:

我的web客户端是否在第四行下方发送请求?怎么 它知道怎么做吗


是的,第3行告诉浏览器“您请求的页面已移动到另一个url x”。浏览器通常会自动向第4行的新url x发送一个新请求。

根据user640916的提示,下面是我如何清除错误的

在url.py中,我添加了:

url(r'^home$', 'guide.views.home'),
from django.contrib.flatpages.views import flatpage

def home(request):
    return flatpage(request, "/home/")
在views.py中,我添加了:

url(r'^home$', 'guide.views.home'),
from django.contrib.flatpages.views import flatpage

def home(request):
    return flatpage(request, "/home/")
用于登录的“我的服务器状态”消息现在如下所示:

[17/Aug/2013 09:13:52] "GET / HTTP/1.1" 200 1263
[17/Aug/2013 09:14:00] "POST / HTTP/1.1" 302 0
[17/Aug/2013 09:14:00] "GET /home HTTP/1.1" 200 4529

不完全是我想要的,但它很有效。我仍然觉得我做得不对。django.contrib.auth似乎会自动在url“/home”中查找主视图,而不带尾随斜杠

我无法发表评论或投票,但我想为其他人添加一些内容,这些内容在我的成功链接后,我遗漏了一个尾随斜杠

这:

改为:

success_url = 'step-two/'

已修复。

我在url.py中没有主视图模式,因为它位于flatpages数据库中。flatpages应用程序需要“/home/”,但其他东西需要“/home”。但是你的回答给了我一个尝试的想法。