【发布时间】:2014-09-14 21:10:57
【问题描述】:
我想在保存一行时显示一条成功的消息,使用 Django 的消息传递框架和基于类的视图,代码如下所示,但不显示消息。
任何帮助将不胜感激
#views.py
from django.views.generic import ListView, CreateView, UpdateView, TemplateView
from django.contrib.messages.views import SuccessMessageMixin
class CreateEmployee(SuccessMessageMixin, CreateView):
model = Employee
template_name = 'employees/create.html'
form_class = frmCreate
def get_success_url(self):
return reverse('Employees:Create')
def get_context_data(self, **kwargs):
contexto = super(CreateEmployee, self).get_context_data(**kwargs)
contexto['action'] = reverse('Employees:Create')
return contexto
success_message = 'Employee successful created'
#template
#create.html
<form action="{{ action }}" method="POST" role="form">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Save" class="btn btn-success">
<form>
{% if messages %}
<div class="col-lg-3 color03">
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
</div>
{% endif %}
【问题讨论】:
-
您是否尝试将参数的顺序从类 CreateEmployee(CreateView, SuccessMessageMixin) 更改为类 CreateEmployee(SuccessMessageMixin, CreateView),例如 django 文档中的示例:docs.djangoproject.com/en/dev/ref/contrib/messages/…?
-
@szymanskilukasz 我已经完成了建议的更改,这解决了我的问题,f..ck 我,太盲目了
-
@ElioClímacoHerrera 我猜你的表单抛出错误而不是保存。你检查过吗?此外,Mixin 应该按照文档中所述的顺序进行。
-
是的@sagarchalise 我的表单正在保存数据,感谢您的帮助。我,解决了改变参数的顺序
-
这可能是this的副本!