python – 在django中传递消息时重定向

python – 在django中传递消息时重定向,第1张

概述在我检查用户是否存在user_settings之后,我正在尝试运行重定向(如果它们不存在 – 用户被带到表单输入并保存它们). 我想将用户重定向到适当的表单,并向他们发送他们必须“保存他们的设置”的消息,以便他们知道为什么他们被重定向. 该函数如下所示: def trip_email(request): try: user_settings = Settings.objec 在我检查用户是否存在user_settings之后,我正在尝试运行重定向(如果它们不存在 – 用户被带到表单输入并保存它们).

我想将用户重定向到适当的表单,并向他们发送他们必须“保存他们的设置”的消息,以便他们知道为什么他们被重定向.

该函数如下所示:

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">&times;</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中传递消息时重定向所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1196323.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存