Javascript 在Django中限制对除主页以外的其他页面的访问
我正在开发一个Django应用程序。这个应用程序有很多功能。因此,我将每个功能分解为子功能,并在每个应用程序中实现。我使用ajax和javascript在提交表单时在主页上显示结果,而不是重定向到我的子功能应用程序页面 但用户可以通过URL访问子功能应用程序页面。我想限制用户以这种方式访问子功能应用程序页面 这里,让我用我的一个子功能解释一下计算器 我的主页上有每个子功能的模板和所有表单。其中一个子功能是计算器 计算器视图Javascript 在Django中限制对除主页以外的其他页面的访问,javascript,python,django,Javascript,Python,Django,我正在开发一个Django应用程序。这个应用程序有很多功能。因此,我将每个功能分解为子功能,并在每个应用程序中实现。我使用ajax和javascript在提交表单时在主页上显示结果,而不是重定向到我的子功能应用程序页面 但用户可以通过URL访问子功能应用程序页面。我想限制用户以这种方式访问子功能应用程序页面 这里,让我用我的一个子功能解释一下计算器 我的主页上有每个子功能的模板和所有表单。其中一个子功能是计算器 计算器视图 def index(request): calculated_resul
def index(request):
calculated_result = do_calculation(request) # claculation logic
return JsonResponse(calculated_result)
计算器URL
app_name = 'calculator'
urlpatterns = [
url(r'^$', views.index, name='calculator'),
]
urlpatterns = [
url(r'^home/', include('home.urls')),
url(r'^calculator/', include(('calculator.urls', 'calculator'), namespace='calculator')),
]
我的javascript代码,用于从计算器URL获取信息并将其显示在我的主页URL上
$(document).ready(function(){
$('#calc_form').submit(function(event){
console.log(event);
event.preventDefault()
$.ajax({
url:'/calculator/',
type:'POST',
data:$(this).serialize(),
success:function(response){
$('#output_box').html(`${response.result}`);
}
});
})
})
当用户在主页上提交表单时,该控件转到calculator视图执行计算并在calculator URL中显示,但my js脚本阻止重定向并获取结果并显示在my home page中。用户仍然可以通过URL访问计算器页面,如网站/calculator/
。我想以这种方式限制访问
项目URL
app_name = 'calculator'
urlpatterns = [
url(r'^$', views.index, name='calculator'),
]
urlpatterns = [
url(r'^home/', include('home.urls')),
url(r'^calculator/', include(('calculator.urls', 'calculator'), namespace='calculator')),
]
我查看了来自Django decorators的登录请求,但没有用,因为我的网站对所有用户开放。嗨,只需使用视图装饰器
from django.views.decorators.http import require_http_methods
@require_http_methods(["POST"])
def index(request):
calculated_result = do_calculation(request) # claculation logic
return JsonResponse(calculated_result)
如果您进入GET,将返回一个错误django.http.HttpResponseNotAllowed
(405)
文档是而不是发布到calculator/,只需发布到home/,然后从URL列表中删除calculator/。然后将计算器视图代码移动到主视图,或者您可以检查该请求是否为GET请求,并在用户尝试转到计算器/使用
if request时将用户重定向到主页。在您的GET/post
中是否有ajax()
,否则返回404错误非常感谢,这很有帮助。