2017-08-08 19 views
1

私はapp.itにクラスと学生に関するデータを格納するmanytomanyフィールドを作成しています。Django-ユーザーにURLへのアクセスを制限する

urls.py

url(r'^class/(?p<title>[-\w]+)/(?p<id>[\d]+)/',views.list,name ='list'), 

基本的には1 user(教師)は、多くのclass_room .Each class_roomを作成することができ、そのクラスに以下の1 title、多くのstudentsを持っています。

問題がある:

class_roomは、ユニークなurlを持っています。例えば、(mywebsite.com/science/88/)このリンクは、匿名のユーザーではない生徒のためだけにアクセスできます。次の生徒以外の人がランダムに試してみると、ループホールです。urlこのようにページを見ることができます(mywebsite.com/数学/ 2500 /)。

学生がフォローしていないページへのアクセスを制限するにはどうすればよいですか?

+1

あなたのビューコードを示してください –

+0

@Bearブラウン遅く応答ブラウンのために申し訳ありません。私はそれがうまくいくクエリを使用して1つのソリューションを取得します。応答ありがとう: – Akash

+0

とありがとう2) –

答えて

2

UserPassesTestMixinmixinを使用することができます。基本的には、test_func関数を実装するViewクラスを記述します。この関数はselfにアクセスできるため、URLとユーザーを読み取ることができます。 test_funcがTrueを返した場合、ユーザーは続行できます。それ以外の場合はアクセス制御に渡されます(構成されている場合は、おそらくログインフォームにリダイレクトされます)。

関連する問題