我的template.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
}
});
};
我的views.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"
并且这有效,但是{{1} } request.is_ajax()
。
对于呼叫post_edit(可能)我需要帖子的id。我在哪里可以得到它? 我应该从模板传递给save_post()吗?
编辑:忽略以下这些行
我还应该在某个地方使用False
吗?
谢谢
编辑:现在我使用preventDefault()
,但它会出现此错误:
preventDefault()
和ajax dosn调用该视图。编辑:我解决了这个问题,但我明天继续:)
答案 0 :(得分:-2)
您的Ajax代码有些问题和观点是正确的
我附上了我的代码附加图片和代码
$.ajax({
type : 'POST', // define the type of HTTP verb we want to use (POST for our form)
url : 'myajaxview', // the url where we want to POST
data :{
'csrfmiddlewaretoken': '{{csrf_token}}',
'text': text,
'search': search,
'email': email,
'url': url,
'telephone': telephone,
'password': password,
'number': number,
},
dataType : 'json', // what type of data do we expect back from the server
encode : true
})