经过几天的教程,我称之为退出,任何帮助将不胜感激。无法实现这一点,我确信它很简单,但这些东西非常复杂。只是尝试使用按钮删除会话变量。我也尝试过Ajax示例。请不要将我转发到另一个帖子,除非你确定它会真正起作用,因为很多人都没有。
URL: urls.py
...
url(r'^$', clear_session, name='clear_session'),
...
和
View: views.py
def clear_session(request):
print('hello')
if not request.POST:
print('hello')
del request.session['jobs_append']
print('session list', request.session['jobs_append'])
和
Template: index.html
...
<input id="clear_sesh" name="update_log" type="button" value="Update Log"/>
...
<script type="text/javascript">
$(function(){
$("#clear_sesh").click(function(){
$.post(
url : "/clear_session/",
dataType:"html",
success: function(data, status, xhr){
//do something with your data
}
);
return false;
});
});
</script>
...
<!-- jQuery -->
<script src="{% static 'vendor/jquery/jquery.min.js' %}"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="{% static 'vendor/bootstrap/js/bootstrap.min.js' %}"></script>
<!-- Plugin JavaScript -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script>
<script src="{% static 'vendor/scrollreveal/scrollreveal.min.js' %}"></script>
<script src="{% static 'vendor/magnific-popup/jquery.magnific-popup.min.js' %}"></script>
<!-- Theme JavaScript -->
<script src="{% static 'js/creative.min.js' %}"></script>
答案 0 :(得分:0)
我无法看到视图代码的任何问题,但您的网址代码和您的jQuery调用是不对的,因为您对该视图的网址是空的,这意味着您的视图会被调用第一页(例如127.0.0.1:8000
),但您正在调用网址&#34; / clear_session /&#34; (例如127.0.0.1:8000/clear_session/
)使用AJAX,总而言之,您永远不会调用您的视图,并且通过扩展代码永远不会被执行。
<强>更新强>
这是一个可以帮助您制作视图的工作示例。此外,我发现您的AJAX调用存在问题,您应该使用post
以外的请求类型,因为您在视图中明确排除了帖子请求。现在的例子:
urls.py
url(r'^clear-session-url/$', clear_session, name='clear_session_name'),
url(r'^update-session-url/$', update_session, name='update_session_name')
views.py
from django.http import JsonResponse
def clear_session(request):
if not request.POST:
del request.session['jobs_append']
return JsonResponse({'jobs_append': request.session.get('jobs_append', None)})
def update_session(request):
if not request.POST:
request.session['jobs_append'] = True
return JsonResponse({'jobs_append': request.session.get('jobs_append', None)})
的index.html
<script type="text/javascript">
$.get('/update-session-url/', function(data) {console.log(data)});
$.get('/clear-session-url/', function(data) {console.log(data)});
</script>
我添加了第二个视图,以便于进行简单的测试并同情你应该如何使用你的网址。还为所有参数使用了不同的字符串,以减少您对url函数的混淆。 注意:您将在浏览器的javascript控制台中看到此调用的结果。
答案 1 :(得分:0)
我在没有任何脚本的情况下开始工作:
template: index.html
<input type="button" onclick="window.location.href='clear_session.html'" value="Clear Session">
和
view: views.py
def clear_sesh(request):
print('SESSION CLEARED')
request.session.pop("jobs_append", None)
return redirect('index')
和
URL: urls.py
url('clear_session', clear_sesh, name='clear_sesh')
现在它重定向到我想要的地方。您认为我的解决方案存在任何问题吗?我认为理解url模式不能重叠对我有用,所以重定向似乎很金。
另外,我还是新手,我应该测试你的解决方案并将你的答案标记为成功/ upvote吗?