我希望在view.py中的方法完成后有一条alert()消息(比如在javascript中)
我的方法是
def change_password(request):
dictData = getInitialVariable(request)
in_username = request.POST['txt_username']
in_password = request.POST['txt_password']
in_new_password = request.POST['txt_new_password']
user = authenticate(username=in_username, password=in_password)
if user is not None:
if user.is_active:
u = User.objects.get(username=in_username)
u.set_password(in_new_password)
u.save()
# Redirect to a success page.
return HttpResponseRedirect('/profiles/'+in_username)
将u保存到数据库后,将显示弹出消息。 我怎么能实现它?
答案 0 :(得分:5)
我认为最好的解决方案是消息(docs)
如message levels docs中所述,Django建议使用“INFO”级别的消息与用户进行通信。
默认情况下,Django中会启用消息。如果我的示例不适合你,你应该检查enable messages block
查看部分:
from django.contrib import messages
def change_password(request):
...your stuff...
messages.info(request, 'Your password has been changed successfully!')
return HttpResponseRedirect('/profiles/'+in_username)
模板部分:
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
您可以在特定视图或一般模板(布局/标题)中粘贴按摩输出。
答案 1 :(得分:2)
有很多方法可以很好地做到这一点(例如,参见&#34; flash&#34;在Bootstrap中)......但是这里是你如何按字面意思做你所要求的。
在您重定向到的视图中,将消息值传递给您的模板:
return render_to_response('template_name', message='Save complete')
在您的模板中,添加以下脚本:
<script>
alert('{{ message }}');
</script>
答案 2 :(得分:0)
在send_mail()之后添加messages.success
来自django.contrib导入消息
def contact(request):
subject = request.POST['name']
message = request.POST['message']
recipient = settings.EMAIL_HOST_USER
recipient = [recipient,]
email_from = request.POST['mailing']
send_mail( subject, message, email_from, recipient )
messages.success(request, 'Successfully Sent The Message!')
return redirect('send_email')
将此代码添加到正文模板中
{% if messages %}
{% for message in messages %}
{% if message.tags %} <script>alert("{{ message }}")</script> {% endif %}
{% endfor %}
{% endif %}
答案 3 :(得分:-2)
只需重定向到/ profiles / in_username / password_updated
您可以在/ profiles / in_username / password_updated:
上使用HTML模板此模板重新定义/ profiles / in_username中使用的模板并添加带警报的JavaScript
<!DOCTYPE html>
<html lang="en">
<body>
<script>
alert("Your message");
</script>
[...]
</body>
</html>
只需在该视图中使用render_to_response:
from django.shortcuts import render_to_response
return render_to_response('mytemplate.html', {"in_username": in_username});
有关模板的更多信息,请参阅https://docs.djangoproject.com/en/1.7/topics/templates/。