如何使用上下文数据呈现数据或重定向到generic.DetailView。 我有型号注释
class Note(models.Model):
key = models.CharField(max_length=50, primary_key=True)
text = models.TextField()
我的观点是
class ShowNote(generic.DetailView):
model = Note
template_name = 'notes/show_note.html'
def get(self, request, *args, **kwargs):
try:
self.object = self.get_object()
except Http404:
# redirect here
return render(request, 'notes/index.html', {'error': 'Note doesnt exist', })
context = self.get_context_data(object=self.object)
return self.render_to_response(context)
url(r'^show/(?P.*)/$', views.ShowNote.as_view(), name='show_note'),
页面显示注释的关键字及其文本还有一个按钮,如果文本被更改,则保存文本。
def save_note(request):
key = request.POST['key']
selected_note = Note.objects.get(pk=key)
selected_note.text = request.POST['text']
selected_note.save()
//back to show_note
如何在'notes / show_note.html'中呈现数据{'message' : 'note was saved successfully'}
,但使用相同的主键
答案 0 :(得分:4)
您可以为此覆盖get_context_data
方法。将以下方法放在基于类的视图中。
def get_context_data(self, **kwargs):
data = super().get_context_data(**kwargs)
data['message'] = 'note was saved successfully'
return data
然后在模板中
{{ message }}
docs将是一个很好的帮助。
另一种方法是使用django.contrib.messages
中的消息模块。
您可以在代码中使用以下内容
def get(self, request, *args, **kwargs):
.... # your code
messages.success(request, "Note was added successfully")
然后在模板中
{% for message in messages%}
{{ message }}
{% endfor %}