重定向到AJAX中的根URL

时间:2019-06-05 07:29:15

标签: django django-ajax-selects

我正在寻找一种在AJAX请求中以('')而不是('search /')开头的URL的方法。我可以解决此问题,只需使用path('search/email_add/<int:pk>/', views.email_add, name="email_add_from_search")在URL调度程序中添加新路径,但这不是DRY方法,并且RedirectView不满足我的要求。

当我在根URL中使用add-phone.js脚本时,它可以正常工作。

在('search /')URL中使用脚本时出现错误Not Found: /search/email_add/41/

Ajax请求

$.ajax({
                url: 'email_add/'+person_id+'/',
                method: 'POST',
                data: {
                    'email': email,
                },
                error: function(result){},
                success: function(result){},

urls.py

urlpatterns = [
    path('', views.contact_list, name="contact_list"), # GET
    path('add/', views.contact_add, name="contact_add"), # POST
    path('search/', views.contact_search, name="contact_search"), # GET
    path('delete/<int:pk>/',  views.contact_detail, name="contact_delete"), # DELETE
    path('edit/<int:pk>/',  views.contact_detail, name="contact_edit"), # POST
    path('phone_add/<int:pk>/', views.phone_add, name="phone_add"), # POST
    path('email_add/<int:pk>/', views.email_add, name="email_add"), # POST
    # path('search/phone_add/<int:pk>/', views.phone_add, name="phone_add_from_search"),
    # path('search/email_add/<int:pk>/', views.email_add, name="email_add_from_search"),

]

1 个答案:

答案 0 :(得分:0)

在您的JavaScript中,此url: 'email_add/'+person_id+'/'正在访问相对网址。因此,如果您使用的是网址http://my-web-site/some/path,它将带您到http://my-web-site/some/path/email_add/id/

我认为您需要http://my-web-site/email_add/id/,这意味着您需要url: '/email_add/'+person_id+'/'