我有一个名为dashboard
的应用,我可以在其中重定向所有已登录的用户,并提供用户添加文章的选项。
用户点击表单中的“提交”按钮后,数据将通过POST发送到/dashboard/article/save
网址,在存储数据后,视图会将HttpResponseRedirect
返回show_dashboard
,呈现{ {1}}会话变量dashboard.html
。
在仪表板模板文件中,我添加了一个notify.js代码以向用户显示确认。问题是如果定义了此会话var,则每次显示仪表板页面时,如果用户没有添加文章,则会触发通知。
(我对使用网络框架很新,所以我不知道这一切是如何正常运作的)
一些代码:
仪表板/ models.py:
result
仪表板/ urls.py:
class Article(models.Model):
id = models.IntegerField(primary_key=True)
ar_title = models.CharField(max_length=25)
ar_data = models.CharField(max_length=500)
user = models.ForeignKey(User,on_delete=models.CASCADE)
def getArticleTitle(self):
return self.title
def getArticleData(self):
return self.title
def getArticleAuthor(self):
return self.user
仪表板/ views.py:
urlpatterns = [
url(r'^$', views.show_dashboard,name='home_dashboard'),
url(r'^profile/save/', views.save_profile,name="save_profile"),
url(r'^newsfeed/', views.get_newsfeed,name="newsfeed",),
url(r'^profile/', views.show_profile,name="show_profile"),
url(r'^article/save/', views.add_new_article,name="add_new_article"),
]
dashboard.html:
@login_required
def show_dashboard(request):
return render(request,'dashboard/dashboard.html',{'form':NewArticleForm()})
def add_new_article(request):
if(request.method == 'POST'):
ar_title= request.POST['ar_title']
ar_data = request.POST['ar_data']
user = request.user
form = NewArticleForm(request.POST)
if(form.is_valid()):
Article.objects.create(ar_title=ar_title,ar_data=ar_data,user=user)
request.session["result"] = "add_article_OK"
return HttpResponseRedirect(reverse('home_dashboard'))
现在,如何在显示消息后删除此会话值?我知道可以发出{% ifequal request.session.result 'add_article_OK' %}
<script>
$.notify("New article added successfully",
{position:"bottom right","className":"success","autoHide":"yes","autoHideDelay":"3000"});
</script>
{% endifequal %}
但是我可以把它放在这种移动的过程中吗?
答案 0 :(得分:2)
在show_dashboard
视图中执行此操作。
不是从模板中的会话中获取值,而是在视图中弹出它并将其传递给模板;这样你就可以一次性完成并清理它。
@login_required
def show_dashboard(request):
context = {
'form': NewArticleForm(),
'result': request.session.pop('result', None)
}
return render(request,'dashboard/dashboard.html',context)
...
{% ifequal result 'add_article_OK' %}