Django フレームワークにおけるマルチユーザー管理スキル (パート 2)
Django フレームワークでのマルチユーザー管理スキル (パート 2)
前の記事では、Django フレームワークでマルチユーザー管理を実装する方法を紹介しました。この記事では、開発者がマルチユーザー シナリオをより適切に処理できるように、さらに多くのヒントとベスト プラクティスを引き続き紹介していきます。
- Django 独自の権限システムを使用する
Django は、ユーザー権限管理を簡単に実装できる組み込みの権限システムを提供します。 models.py で権限モデルを定義します。
from django.contrib.auth.models import Permission, User class Post(models.Model): title = models.CharField(max_length=100) content = models.TextField() author = models.ForeignKey(User, on_delete=models.CASCADE) class Meta: permissions = [ ("can_publish", "Can publish posts"), ]
上記のコードは Post モデルを定義し、各記事には著者がいます。 Meta クラスには「can_publish」という名前の権限が定義されており、これはユーザーが記事を公開できることを意味します。
view 関数では、次のようにユーザーに特定の権限があるかどうかを確認できます:
from django.contrib.auth.decorators import permission_required @permission_required('blog.can_publish') def publish_post(request): # 发布文章的逻辑
- Django-guardian を使用して権限管理を強化する
Django の権限システムは組み込まれていますが、オブジェクトレベルの権限管理では使用するのが困難です。 Django-guardian は、オブジェクト レベルでのより詳細な権限制御を可能にするサードパーティ ライブラリです。 Django-guardian を使用するには、models.py で権限モデルを定義する必要があります。
from django.contrib.auth.models import User from django.db import models from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.fields import GenericForeignKey class Post(models.Model): title = models.CharField(max_length=100) content = models.TextField() author = models.ForeignKey(User, on_delete=models.CASCADE) class PostPermission(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) post = models.ForeignKey(Post, on_delete=models.CASCADE) can_edit = models.BooleanField(default=False) content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) object_id = models.PositiveIntegerField() content_object = GenericForeignKey('content_type', 'object_id')
上記のコードは Post モデルを定義し、各記事には著者がいます。同時に、特定の記事に対するユーザーの編集権限を表す PostPermission モデルが定義されます。 Django-guardian の API を使用すると、ユーザーに特定の記事を編集する権限を与えることができます。
from django.contrib.auth.models import User from blog.models import Post, PostPermission from guardian.shortcuts import assign_perm user = User.objects.get(username='testuser') post = Post.objects.get(id=1) assign_perm('can_edit', user, post)
- ユーザーが自分の情報を更新できないように制限する
マルチユーザー アプリケーションの管理において、場合によっては、ユーザーが自分の情報のみを更新できるように制限する必要があります。たとえば、ソーシャル ネットワーキング サイトでは、ユーザーが自分の個人情報のみを更新し、他の人の情報を変更できないように制限する必要があります。権限チェックは view 関数で実装できます。
from django.contrib.auth.decorators import login_required from django.shortcuts import render, get_object_or_404 from blog.models import Profile @login_required def update_profile(request, pk): profile = get_object_or_404(Profile, pk=pk) if request.user != profile.user: return render(request, 'profile_error.html') if request.method == 'POST': # 更新用户资料逻辑 else: # 返回更新资料页面
上記のコードは、まずユーザーがログインしているかどうかをチェックし、次に主キーに基づいて更新するプロファイル インスタンスを取得します。ユーザーがプロファイル所有者であるかどうかを確認した後、そうでない場合は、エラー ページを表示します。所有者の場合は、更新ページをレンダリングします。
結論
この記事の導入を通じて、Django フレームワークでマルチユーザー シナリオをより適切に処理する方法を学びました。ユーザーのアクセス許可は、組み込みのアクセス許可システムを使用して簡単に管理でき、Django-guardian はより詳細なオブジェクト レベルのアクセス許可制御を実現できます。最後に、ユーザーが自分の情報を更新できないように制限すると、アプリケーションのセキュリティとユーザー エクスペリエンスが向上します。これらのヒントが Django 開発のインスピレーションになれば幸いです。
以上がDjango フレームワークにおけるマルチユーザー管理スキル (パート 2)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Win11 のヒントの共有: Microsoft アカウントのログインをスキップする 1 つのトリック Windows 11 は、新しいデザイン スタイルと多くの実用的な機能を備えた、Microsoft によって発売された最新のオペレーティング システムです。ただし、一部のユーザーにとっては、システムを起動するたびに Microsoft アカウントにログインしなければならないのが少し煩わしい場合があります。あなたがそのような人であれば、次のヒントを試してみるとよいでしょう。これにより、Microsoft アカウントでのログインをスキップして、デスクトップ インターフェイスに直接入ることができるようになります。まず、Microsoft アカウントの代わりにログインするためのローカル アカウントをシステムに作成する必要があります。これを行う利点は、

C 言語では、他の変数のアドレスを格納するポインタを表し、& は変数のメモリ アドレスを返すアドレス演算子を表します。ポインタの使用に関するヒントには、ポインタの定義、ポインタの逆参照、ポインタが有効なアドレスを指していることの確認が含まれます。アドレス演算子の使用に関するヒントには、変数アドレスの取得、配列要素のアドレスを取得するときに配列の最初の要素のアドレスを返すことなどが含まれます。 。ポインター演算子とアドレス演算子を使用して文字列を反転する実際の例。

私たちは Excel で表を作成したり編集したりすることがよくありますが、ソフトウェアに触れたばかりの初心者にとって、Excel を使用して表を作成する方法は私たちほど簡単ではありません。以下では、初心者、つまり初心者がマスターする必要があるテーブル作成のいくつかの手順について演習を行います。初心者向けのサンプルフォームを以下に示します。入力方法を見てみましょう。 1. Excel ドキュメントを新規作成するには 2 つの方法があります。 [デスクトップ]-[新規作成]-[xls]ファイル上の何もない場所でマウスを右クリックします。 [スタート]-[すべてのプログラム]-[Microsoft Office]-[Microsoft Excel 20**] を実行することもできます。 2. 新しい ex ファイルをダブルクリックします。

VSCode (Visual Studio Code) は、Microsoft によって開発されたオープン ソース コード エディターであり、強力な機能と豊富なプラグイン サポートを備えており、開発者にとって推奨されるツールの 1 つです。この記事では、初心者が VSCode の使用スキルをすぐに習得できるようにするための入門ガイドを提供します。この記事では、VSCode のインストール方法、基本的な編集操作、ショートカット キー、プラグインのインストールなどを紹介し、具体的なコード例を読者に提供します。 1. まず VSCode をインストールします。

タイトル: PHP プログラミングのヒント: 3 秒以内に Web ページにジャンプする方法 Web 開発では、一定時間内に別のページに自動的にジャンプする必要がある状況によく遭遇します。この記事では、PHP を使用して 3 秒以内にページにジャンプするプログラミング手法を実装する方法と、具体的なコード例を紹介します。まず、ページ ジャンプの基本原理は、HTTP 応答ヘッダーの Location フィールドを通じて実現されます。このフィールドを設定すると、ブラウザは指定されたページに自動的にジャンプできます。以下は、P の使用方法を示す簡単な例です。

Go言語プログラム開発において、関数再構築スキルは非常に重要な部分です。関数の最適化とリファクタリングにより、コードの品質と保守性が向上するだけでなく、プログラムのパフォーマンスと可読性も向上します。この記事では、読者がこれらの手法をよりよく理解して適用できるように、Go 言語での関数再構築手法を具体的なコード例と組み合わせて詳しく説明します。 1. コード例 1: 重複したコード部分を抽出する 実際の開発では、コード部分が再利用されることがよくありますが、このとき、重複するコード部分を独立した機能として抽出することを検討できます。

フォームは、Web サイトまたはアプリケーションの作成に不可欠な部分です。 Laravel は人気のある PHP フレームワークとして、豊富で強力なフォーム クラスを提供し、フォーム処理をより簡単かつ効率的にします。この記事では、Laravel フォームクラスを使用して開発効率を向上させるためのヒントをいくつか紹介します。以下、具体的なコード例を挙げて詳しく説明します。フォームの作成 Laravel でフォームを作成するには、まずビューに対応する HTML フォームを記述する必要があります。フォームを操作するときは、Laravel を使用できます

Win11 のトリックが明らかに: Microsoft アカウントのログインをバイパスする方法 最近、Microsoft は新しいオペレーティング システム Windows11 を発表し、広く注目を集めています。以前のバージョンと比較して、Windows 11 はインターフェイスのデザインや機能の改善の点で多くの新しい調整を加えましたが、いくつかの議論も引き起こしました. 最も目を引く点は、ユーザーが Microsoft アカウントでシステムにログインすることを強制することです。ユーザーによっては、ローカル アカウントでログインすることに慣れており、個人情報を Microsoft アカウントにバインドすることに抵抗がある場合があります。
