我有一个Django模板,列出了用户所属的所有聊天组。单击显示的组的名称将使用户进入所述组。这是一个简单的HTML GET请求:<a href="{% url 'private_group' unique %}">Group name</a>
,其中unique
是与该群组相关的uuid。
目前,点击群组名称会向我发送无限重定向(最后一直给出的输出)。到底是怎么回事?请帮我解决,详情如下:
urls.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
答案 0 :(得分:4)
(?P<slug>[\w.@+-]+)
匹配字符串&#34; private&#34;。这意味着您的重定向到/ group / private始终被private_group视图捕获,该视图会重定向回自身。
交换这些网址的顺序,以便私有网址排在第一位。