gpt4 book ai didi

django-forms - 如何在 Django FormView 中使用 get_success_url() 发送成功消息

转载 作者:行者123 更新时间:2023-12-02 18:07:32 25 4
gpt4 key购买 nike

如果表单有效,我有 FormView 重定向到上一页。这很好,但我如何告诉用户该信息已发布?我希望他在重定向后在模式窗口中看到成功消息。

我尝试通过 get_success_url 中的 request.session 来完成此操作,但它不符合我的目标,因为用户可以多次提交表单。那么如何在 FormView 中的 get_success_url 中返回带有重定向的任何消息?

我的FormView

class CatPhotoUploadFormView(FormView):
template_name = 'blank.html'
form_class = CatPhotoForm

def get_success_url(self):
self.request.session['success_message'] = 'Everything is fine'
return reverse('cat:detail_cat', args=(self.kwargs['pk'],))

def form_valid(self, form):
cat = Cat.objects.filter(id__exact=self.kwargs['pk'])
for each in form.cleaned_data['attachments']:
print('****', each, '****', type(each))
Photo.objects.create(photo_path=each, photo_author=self.request.user, photo_cat = cat[0])
return super(CatPhotoUploadFormView, self).form_valid(form)

最佳答案

为此目的使用 Django 消息传递框架,将 get_success_url 更改为 message。

from django.contrib import messages
def get_success_url(self):
messages.add_message(self.request, messages.INFO, 'form submission success')
return reverse('cat:detail_cat', args=(self.kwargs['pk'],))

在你的模板中,类似这样的内容(注意:记住传递消息)

{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}

关于django-forms - 如何在 Django FormView 中使用 get_success_url() 发送成功消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37633356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com