javascript - 为什么“发布”方法在我的 django 应用程序中不起作用?
问题描述
我正在使用 Django 开发博客,当我想获取联系信息时,发布请求似乎根本不起作用。在联系人视图中我没有做太多我只是想确保发布请求正在工作但它返回一个 Get 请求而不是 get 方法
在 javascript 文件中工作得非常好
//CONTACT FORM
$('#contactform').submit(function(){
var action = $(this).attr('action');
$("#message").slideUp(750,function() {
$('#message').hide();
$('#submit').attr('disabled','disabled');
$.post(action, {
name: $('#name').val(),
email: $('#email').val(),
comments: $('#comments').val()
},
function(data){
document.getElementById('message').innerHTML = data;
$('#message').slideDown('slow');
$('#submit').removeAttr('disabled');
if(data.match('success') != null) $('#contactform').slideUp('slow');
$(window).trigger('resize');
}
);
});
return false;
});
视图.py
from django.http.response import HttpResponse
from contact.forms import ContactForm
from django.shortcuts import render
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
# Create your views here.
def contacts(request):
if request.method == "POST" and request.is_ajax:
print('hello!!')
return render(request, 'contact/contact.html')
表格.py
from django import forms
from .models import Contact
class ContactForm(forms.Form):
class Meta:
model = Contact
fields = ['cont_name', 'cont_email', 'cont_message', 'cont_date']
模型.py
from django.db import models
from datetime import datetime
class Contact(models.Model):
cont_name = models.CharField( max_length = 10)
cont_email = models.EmailField()
cont_message = models.TextField(blank=False)
cont_date = models.DateTimeField(default=datetime.now, blank=True)
def __str__(self):
return self.cont_name
联系人.html
<div class="container">
<div class="row">
<div class="col-md-6">
<p class="lead">Sold old ten are quit lose deal his sent. You correct how sex several far distant believe journey parties. We shyness enquire uncivil affixed it carried to. </p>
<p>End sitting shewing who saw besides son musical adapted. Contrasted interested eat alteration pianoforte sympathize was. He families believed if no elegance interest surprise an. It abode wrong miles an so delay plate.</p>
</div>
<div class="col-md-6">
<div id="message"></div>
<form method="post" action="{% url 'contacts' %}" id="ContactForm" class="main-contact-form wow">
{% csrf_token %}
<input type="text" class="form-control col-md-4" name="name" placeholder="Your Name *" id="name" required data-validation-required-message="Please enter your name." />
<input type="text" class="form-control col-md-4" name="email" placeholder="Your Email *" id="email" required data-validation-required-message="Please enter your email address." />
<textarea name="comments" class="form-control" id="comments" placeholder="Your Message *" required data-validation-required-message="Please enter a message."></textarea>
<input class="btn btn-primary btn-theme" type="button" name="submit" value="Submit" />
</form>
</div>
</div>
</div>
网址.py
from django.urls import path, reverse
from . import views
urlpatterns = [
path('', views.contacts, name= 'contacts'),
]
解决方案
您的问题含糊不清,但似乎您想在 django 中进行 ajax 发布请求。你可以试试这个:
$('#contactform').submit(function(){
var action = $(this).attr('action');
var name = $("#name").val()
var email = $("email").val()
var formData = {
name: name,
email: email
}
$.ajax({
type: "POST",
data: formData,
url:action,
beforeSend: function (data) {
},
success: function (data) {
if (data){
console.log("Working")
}
},
error: function (data) {
console.log("Not working")
}
})
})
看看这是否有效。
推荐阅读
- django - channel_layer.group_send 无法正常工作
- javascript - item.addEventListener 自动运行
- dart - Dart 抽象可选参数
- python - 使用熊猫数据框列值并粘贴到下一行
- pandas-profiling - 如何从 Pandas Profiling 中获取相关矩阵的数字
- html - 似乎无法点击链接
- javascript - 数据表插件中允许分页时,Jquery查找功能不起作用
- android - Android 10 创建文件意图 - 如何获取 reuslt URI?
- docker - 文件在 docker-compose 中不可见
- angular - 在 Angular 模板表达式中使用函数 Map.prototype.get() 可以吗?