AJAX请求查看在Django生产404

AJAX请求查看在Django生产404

问题描述:

对于我的Ajax请求我得到一个404AJAX请求查看在Django生产404

[06/Feb/2015 06:46:27] "POST /contact/ HTTP/1.1" 404 2149 

我是新来的AJAX,但我觉得我的逻辑是做发送POST请求/contact/网址。这会将请求发送到我的视图中的contact函数并打印出一些文本(现在为了测试目的)。我不确定为什么我得到了404。我对Django和web开发人员相当陌生。

JS:

function create_post() { 
     console.log("create post is working"); 
     var firstName = document.getElementById("firstname"); 
     var lastName = document.getElementById("lastname"); 
     var email = document.getElementById("email"); 
     var phoneNumber = document.getElementById("phonenumber"); 
     var message = document.getElementById("message"); 
     var contactInfo = { 
      "first_name": firstName.value, 
      "last_name": lastName.value, 
      "email": email.value, 
      "phone_number": phoneNumber.value, 
      "message": message.value 
     }; 

     $.ajax({ 
      url: "/contact/", 
      type: "POST", 
      data: contactInfo, 
      success: console.log(contactInfo), 
      error: console.log("ajax fail") 

     }); 
    }; 


// Contact form submit 
    var contactForm = document.getElementById("contact-form"); 
    $(contactForm).on('submit', function(event) { 
     event.preventDefault(); 
     console.log("form submitted"); 
     create_post(); 
    }); 

我猜测它可能是我的网址?

家/ urls.py:

urlpatterns = patterns('', 
    url(r'^$', load_home_content), 
    url(r'^contact/$', contact, name="contact"), 
) 

urls.py:

urlpatterns = patterns('', 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^$', include('home.urls'), name='home'), 
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

家/ views.py:

def contact(request): 
    if request == "POST": 
     print request.POST 
     form = ContactForm(request.POST) 
     print form.first_name, form.last_name, form.email, form.phone_number 
     if form.is_valid(): 
      print "form valid" 
     else: 
      print "form invalid" 
    return render(request, 'home/home.html', {'form': ContactForm}) 

开发工具输出:

enter image description here

enter image description here

由包含URL删除$标志:

url(r'^', include('home.urls'), name='home'), 
+0

为什么删除$符号? – 2018-02-14 19:33:50

+1

$表示“字符串结尾”,因此“^ $”表达式仅与空字符串匹配。 – catavaran 2018-02-15 23:39:30