将上下文数据渲染到 generic.DetailView
Render context data to generic.DetailView
如何呈现数据或使用上下文数据重定向到 generic.DetailView。
我有型号 Note
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'}
但具有相同的主键
您可以为此覆盖 get_context_data
方法。将以下方法放在基于 class 的视图中。
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 %}
如何呈现数据或使用上下文数据重定向到 generic.DetailView。 我有型号 Note
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'}
但具有相同的主键
您可以为此覆盖 get_context_data
方法。将以下方法放在基于 class 的视图中。
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 %}