识别Django代码中导致我的应用程序在浏览器中无限重定向的bug

2024-09-29 23:30:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Django模板,它列出了一个用户所属的所有聊天组。单击所显示组的名称将用户带入所述组。这是一个简单的HTML GET请求:<a href="{% url 'private_group' unique %}">Group name</a>,其中unique是与组相关的uuid。你知道吗

当前,单击组名会将我发送到无限重定向(输出在最后给出)。怎么回事?请帮我排除故障,具体如下:

网址.py是:

urlpatterns = patterns('',
url(r'^group/(?P<slug>[\w.@+-]+)/$', auth(private_group), name='private_group'),
url(r'^group/private/$', auth(PrivateGroupView.as_view()), name='private_group_reply'),
)

private_group是这样一个简单的视图方法:

def private_group(request, slug=None, *args, **kwargs):
    request.session['unique_id'] = slug #setting session variable
    return redirect("private_group_reply")

另一方面,private_group_reply是一个基于类的视图。一些视图代码如下所示(因为我假设它们是不相关的,所以删去大量的行):

class PrivateGroupView(CreateView):
    model = Reply
    form_class = PrivateGroupReplyForm      
    template_name = "private_group_reply.html"

    def get_context_data(self, **kwargs):
        context = super(PrivateGroupView, self).get_context_data(**kwargs)
        if self.request.user.is_authenticated():
            unique = self.request.session['unique_id'] #reading session variable
            context["unique"] = unique
            return context

如果这还不够,请向我询问更多信息。你知道吗


无限重定向:

[29/Mar/2016 19:37:56] "GET /groups/ HTTP/1.1" 200 10077
[29/Mar/2016 19:37:58] "GET /group/12bcd803-2e1a-47b4-9b91-dff279a82a73/ HTTP/1.1" 302 0
[29/Mar/2016 19:37:58] "GET /group/private/ HTTP/1.1" 302 0
[29/Mar/2016 19:37:58] "GET /group/private/ HTTP/1.1" 302 0
[29/Mar/2016 19:37:58] "GET /group/private/ HTTP/1.1" 302 0
[29/Mar/2016 19:37:58] "GET /group/private/ HTTP/1.1" 302 0
[29/Mar/2016 19:37:58] "GET /group/private/ HTTP/1.1" 302 0
[29/Mar/2016 19:37:58] "GET /group/private/ HTTP/1.1" 302 0

Tags: nameselfhttpurlgetrequestsessioncontext

热门问题