有些界面未登录不想让游客访问,我们可以设置如下的测试代码:
# 验证登录的装饰器 from django.contrib.auth.decorators import login_required
@login_required def test_json(request): """测试函数视图""" if request.method == 'POST': json_id = request.POST['json_id'] a = request.POST["a"] b = request.POST['b'] print(a,b,json_id) return HttpResponse(json.dumps({"a":"ok"}),content_type="application/json") def page_not_found(request): return render(request,"404.html",status=404) def page_error(request): return render(request,"404.html",status=500)
然后在urls.py路由文件中设置路由:
from django.urls import path from .views import test_json urlpatterns = [ # 测试使用 path('json_test/', test_json), ]
上面用到的是函数视图的装饰器。类视图的装饰器,只需要再类的下面加上如下代码即可:
from django.utils.decorators import method_decorator from django.contrib.auth.decorators import login_required
class StageListView(View): @method_decorator(login_required) def get(self,request): subject_id = request.GET['subject_id'] stage_list = StageModel.objects.filter(subject_id=subject_id) return render_to_response("stage/stage_list.html",{"stage_list":stage_list})
即可实现权限阻拦