私はすぐにこれをまとめました。この方法に抜け穴がある場合は、私にも分かります(私も学ぶでしょう)。
理想的には、このシナリオを処理する複数のuser_typを持つことができ、必要に応じて管理者がすべてのデータを処理でき、インスタンスに関連するデータを処理できるユーザーができます。
ビューでmodels.py
class UserModel(BaseUser):
# fields related to user details that are not already present in BaseUser
USER_TYPES = (
("A","Admin"),
("U","User"),
)
type = models.CharField(max_length=2, choices=USER_TYPES, default="U")
class AppModel(models.Model):
# fields related to the model
field = models.CharField(max_length=255)
user = models.ForeignKey(UserModel)
は、我々はのAppModelインスタンス・ユーザーを確認することができますし、(つまり、リクエストから来て)ログインしているユーザー。
views.py
def access_data(request, data_id):
data = AppModel.objects.get(pk=data_id)
if data.user == request.user:
#do some thing with the data
else:
## Forbidden request
return redirect("403-Error")
あなたも(複数のビューで確認すること)
urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^access_data/(\d+)$', views.access_data, name='access_data'),
]
このためdecoratorを書くことができ、私を聞かせてください秘密に関する質問があれば、もっと明確にする必要があるかどうかを知るity。
EDIT1:サイトへのリンクを追加 チェックこのアウト:Djangoはsites機能を備えています。これは、サイトのインスタンスごとに個別の設定/データベースを設定するのに役立ちます。
毎回新しいデータベースを使用するのは制約ですか?むしろすべてのデータを同じデータベースに入れて、ユーザーがデータを呼び出すことになります。あなたがこれでうまくいけば、私はこれがどのように達成できるのか全体のアーキテクチャを書くことができます –
アイデアは可能な限りデータを分離することです。ほとんどの場合、セキュリティの問題です。アプリからのデータに他のデータベースからアクセスすることは決してないようにしてください。 – Linio
さて、意味があります –