我想将用户重定向到适当的表单,并向他们发送他们必须“保存他们的设置”的消息,以便他们知道为什么他们被重定向.
该函数如下所示:
def trip_email(request): try: user_settings = Settings.objects.get(user_ID=request.user.ID) except Exception as e: messages.error(request,'Please save your settings before you print mileage!') return redirect('user_settings')
此功能检查用户设置并适当地重定向 – 但消息永远不会出现在模板的顶部.
您可能首先想到:“Django中的消息是否正确设置?”
我有其他功能,我使用非重定向的消息,消息在模板中按预期显示没有问题.消息适当地集成到我的模板中并起作用.
只有当我使用重定向时才能看到我发送的消息.
如果我使用如下的渲染,我会看到消息(当然,URL不会改变 – 我希望发生这种情况).
def trip_email(request): try: user_settings = Settings.objects.get(user_ID=request.user.ID) except Exception as e: messages.error(request,'Please save your settings before you print mileage!') form = UserSettingsForm(request.POST or None) return render(request,'user/settings.HTML',{'form': form})
我还有一些其他需要使用重定向的地方,因为它在功能上是有意义的 – 但我也想将消息传递给那些重定向.
user_settings函数如下所示:
def user_settings(request): try: user_settings = Settings.objects.get(user_ID=request.user.ID) form = UserSettingsForm(request.POST or None,instance=user_settings) except Settings.DoesNotExist: form = UserSettingsForm(request.POST or None) if request.method == 'POST': settings = form.save(commit=False) settings.user = request.user settings.save() messages.warning(request,'Your settings have been saved!') return render(request,{'form': form})
我在文档中找不到任何说明您无法发送带有重定向的邮件的内容…但我无法弄清楚如何让它们显示.
编辑:
这是我在模板中呈现消息的方式:
{% for message in messages %} <div role="alert"> <button type="button" data-dismiss="alert" aria-label="Close"> <span aria-hIDden="true">×</span> </button> {{ message }} </div>{% endfor %}
我不确定它是否重要 – 但它看起来几乎从某个地方两次叫’GET’.
对于这两个URL,URL部分看起来像这样:
# ex: /trips/emailurl(r'^trips/email/$',vIEws.trip_email,name='trip_email'),# ex: /user/settingsurl(r'^user/settings/$',vIEws.user_settings,name='user_settings'),解决方法 您无法查看错误消息,因为它没有呈现,因此消息无处可去.执行此类 *** 作的最佳方法是呈现中间页面,该页面将显示错误消息,并在超时后重定向,这是支付网关在将您重定向到银行时使用的类型.
你可以这样做:
def trip_email(request): try: user_settings = Settings.objects.get(user_ID=request.user.ID) except Exception as e: return render(request,'no_setting_error.HTML',{'form': form})
在no_setting_error HTML页面上,插入Javscript以在超时后自动重定向,如:
<script> function redirect(){ window.location.href = "/user_settings"; } setTimeout(redirect,3000);</script>
这将在3秒后自动将您从错误页面重定向到user_settings页面.
希望这可以帮助!
总结以上是内存溢出为你收集整理的python – 在django中传递消息时重定向全部内容,希望文章能够帮你解决python – 在django中传递消息时重定向所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)