我有两个页面,用户需要登录才能访问,这两个页面都使用@login_requested装饰器重定向到登录URL
@login_required
def ask_question(request)
@login_required
def answer_question(request)
我想在登录页面上显示一条消息,这将是特定的,具体取决于重定向到登录的页面。
两个页面在同一页面上都有一个链接,在索引页面上,所以我不能使用请求来源,因为这两个页面的来源相同。
类似:
"您需要登录才能提出问题";(如果用户来自提问重定向(
"您需要登录才能回答问题";(如果用户来自答案重定向(
您可以将django的messages
框架用于这两个页面。
例如:
如果有人在question
页面上,从按钮上说出其名称ask question
,因此对其进行如下查看:
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
@login_required(login_url='/login-route/')
def ask_question(request):
messages.success(request, 'You need to login to ask the question.')
context{}
return render(request,'appname/anyfile.html',context)
@login_required(login_url='/login-route/')
def answer_to_an_question(request):
context={}
messages.success(request, 'You need to login to answer the question.')
return render(request,'appname/anyfile.html',context)
您可以使用任何messages
,如error,success,warning
等,然后它会将其重定向到下一个url
。然后在用户所在的redirected
页面上,会出现消息,比如说这是一个login
页面,您可以在其中以以下格式显示它:
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
使用djangomessages
的最佳部分是它只会出现one
次。
例如
@login_required(login_url='signin')
write your views here
return render(request, 'path/#####.html', context )
当用户登录您的回报将带他到您想要的页面