【发布时间】:2018-07-06 02:05:42
【问题描述】:
我的模板.html:
...
<button class="btn btn-success" onclick="save_post(event, 'publish')">Publish</button>
...
我的 javascript.js:
function save_post(event, action) {
event.preventDefault();#new line
var tag_string=document.getElementById('id_tags').value;
if (action=='publish' || action=='draft') {
var url_post='/blog/post/new/'
} else {
var url_post='/blog/post_edit/'
};
$.ajax({type: 'POST',
url: url_post,
data: {
tagstring: tag_string,
action: action
},
success: function (lista) {
//code
}
});
};
我的意见.py:
@staff_member_required
def post_new(request):
context_dict=[]
if request.method == "POST":
if request.is_ajax():
#code
...
else:
form = PostForm()
return render(request, 'blog/post_edit.html', context_dict)
我的url.py:
app_name = 'blog'
urlpatterns = [
...
path('post/new/', views.post_new, name='post_new'),
path('post/<int:pk>/edit/', views.post_edit, name='post_edit'),
...
我的视图由 url(浏览器)调用,然后按钮调用 javascript 函数并再次调用(使用 ajax)相同的视图,这次使用 request.method = "POST" 并且这有效,但 request.is_ajax() 给出了 @987654328 @。
对于调用 post_edit(可能),我需要帖子的 id。我在哪里可以得到它? 我应该将它从模板传递给 save_post() 吗?
编辑:忽略下面的这些行
我也应该在某处使用preventDefault() 吗?
谢谢
编辑:现在我使用preventDefault(),但它给出了这个错误:
Not Found: /blog/post_new/
[26/Jan/2018 19:07:20] "POST /blog/post_new/ HTTP/1.1" 404 10871
并且 ajax 不会调用视图。编辑:我解决了这个问题,但我明天继续:)
【问题讨论】:
-
如果你不使用
preventDefault,那么一旦回调完成,浏览器仍然会提交表单(默认操作)。我的猜测是request.is_ajax()返回False的正是这个请求。 -
在 save_post event.preventDefault();给出错误:未定义事件。我试过 save_post(event, publish) 但不起作用
-
因为你没有参加活动
-
好的,我通过了事件,但现在它说:未找到:/blog/post_new/ 并且未调用视图...
-
如果您没有显示您的网址格式,我们如何帮助解决
Not Found错误?
标签: javascript ajax django django-views