【发布时间】:2021-10-01 05:00:59
【问题描述】:
我在每一页的页脚都有一个小型时事通讯注册表单。页脚是base.html 的一部分。
我使用 Ajax 提交表单。现在 Ajax 代码调用定义在app1 中的视图,对应的 URL 定义在同一个应用的urls.py 中。
这是 AJAX 代码(此代码保存在单独的 js 文件中并包含在 base.html 中):
$('#newsletterForm').submit(function(e){
e.preventDefault()
$('#loader').css("display", "block")
$.ajax({
type : "POST",
url : "/subscribe/",
data : {
subscriber_email : $('#e-mail').val(),
csrfmiddlewaretoken : csrftoken,
datatype : "json",
},
success: function(){
$('#loader').css("display", "none"),
$('#subscribed').css("display", "block"),
$('#subscribed').delay(3000).fadeOut("slow")
},
failure: function(){
alert('An error has occurred. Please try again.')
},
});
});
视图(在 app1 中定义):
def subscribe(request):
if request.is_ajax():
subscriber = Subscriber(email=request.POST.get('subscriber_email'))
subscriber.save()
return JsonResponse({}, status=200)
else:
return redirect('homepage:index')
URL(在 app1 中定义):
path('subscribe/', views.subscribe, name='subscribe'),
现在,问题是当我在app2 中时,Django 在那个不存在的应用程序中寻找/subscribe/。
那么有没有办法通过在AJAX代码的url中包含appname来解决这个问题呢?或者我必须在每个应用程序的urls.py 和views.py 中包含/subscribe/?
【问题讨论】:
-
你能显示
error code和主要urls.py -
错误代码是
404,因为/subscribe/仅在app1中定义,但我也从app2和app3调用它。我在我的 AJAX 代码中尝试了url : {% url 'app1:subscribe' %},但没有成功。
标签: django ajax django-views django-urls