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 サイトの他の関連記事を参照してください。

Numpyを使用して多次元配列を作成すると、次の手順を通じて実現できます。1)numpy.array()関数を使用して、np.array([[1,2,3]、[4,5,6]])などの配列を作成して2D配列を作成します。 2)np.zeros()、np.ones()、np.random.random()およびその他の関数を使用して、特定の値で満たされた配列を作成します。 3)アレイの形状とサイズの特性を理解して、サブアレイの長さが一貫していることを確認し、エラーを回避します。 4)np.reshape()関数を使用して、配列の形状を変更します。 5)コードが明確で効率的であることを確認するために、メモリの使用に注意してください。

BroadcastinginNumPyisamethodtoperformoperationsonarraysofdifferentshapesbyautomaticallyaligningthem.Itsimplifiescode,enhancesreadability,andboostsperformance.Here'showitworks:1)Smallerarraysarepaddedwithonestomatchdimensions.2)Compatibledimensionsare

Forpythondatastorage、chooseLists forfficability withmixeddatypes、array.arrayformemory-efficienthogeneousnumericaldata、およびnumpyArrays foradvancednumericalcomputing.listSareversatilebuteficient efficient forlargeNumericaldatates;

pythonlistsarebetterthanarrays formangingdiversedatypes.1)listscanholdelementsofdifferenttypes、2)adearedditionsandremovals、3)theeofferintutiveoperation likeslicing、but4)theearlessememory-effice-hemory-hemory-hemory-hemory-hemory-adlower-dslorededatas。

toaccesselementsinapythonarray、useindexing:my_array [2] Accessesthirderement、Returning3.pythonuseszero basedIndexing.1)usepositiveandnegativeindexing:my_list [0] forteefirstelement、my_list [-1] exterarast.2)

記事では、構文のあいまいさのためにPythonにおけるタプル理解の不可能性について説明します。 Tupple式を使用してTuple()を使用するなどの代替は、Tuppleを効率的に作成するためにお勧めします。(159文字)

この記事では、Pythonのモジュールとパッケージ、その違い、および使用について説明しています。モジュールは単一のファイルであり、パッケージは__init__.pyファイルを備えたディレクトリであり、関連するモジュールを階層的に整理します。

記事では、PythonのDocstrings、それらの使用、および利点について説明します。主な問題:コードのドキュメントとアクセシビリティに関するドキュストリングの重要性。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

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

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ホットトピック









