我之前删除了这个问题,因为在处理代码的其他部分时问题突然消失了,但现在又重新出现并持续存在。
我有一个应该去/询问/的网址,而是给我一个登录视图,因为它链接到/ login /?next = / ask
我的根文件夹中的urls.py:
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^$',QuestionListView.as_view(),name='qna_home'),
url(r'^(?P<pk>\d+)/$',question_detail,name='qna_detail'),
url(r'^ask$',new_question,name='qna_ask'),
url(r'^answer$',new_answer,name='qna_answer'),
url(r'^vote$',login_required(VoteFormView.as_view()),name='vote'),
url(r'^people/',include('profiles.urls')),
url(r'^tags/',include('qnatags.urls')),
)
new_question是从我的应用qna导入的视图,其内容为:
@login_required
def new_question(request):
if request.method == 'POST':
asker = Question(submitter = request.user)
form = QuestionForm(data=request.POST, instance = asker)
if form.is_valid():
new_qtn = form.save()
return HttpResponseRedirect(reverse('qna_detail',args=(new_qtn.pk,)))
else:
form = QuestionForm()
return render(request, 'qna/new_question.html',{'form':form})
else:
form = QuestionForm()
return render(request, 'qna/new_question.html',{'form':form})
来自调用它的模板的片段,
<li class="active"><a href="{% url 'qna_ask' %}">Ask Question</a></li>
当我点击此链接时,我被重定向到/ login /?next = / ask之前没有发生过。即使手动输入此URL,也会将我带到这个错误的URL。这很奇怪。我添加的唯一变化是分页,我这样做了:
class QuestionListView(ListView):
....
paginate_by = 15
...
并在&#39; base.html&#39;模板
{% if is_paginated %}
<div class="pagination">
{% if page_obj.has_next %}
<a class="btn btn-danger" href="?page={{ page_obj.next_page_number }}">More »</a>
{% endif %}
</div>
{% endif %}
答案 0 :(得分:1)
您正在使用@login_required
装饰您的视图,如果您未经过身份验证,则会被重定向到登录页面。希望这会有所帮助。
答案 1 :(得分:1)
@login_required
查看功能上有new_question
装饰器
使用new_question
网址(/ask)
重定向到登录页面是预期的行为
https://docs.djangoproject.com/en/1.5/topics/auth/default/#the-login-required-decorator