私はdjangoを使用してアプリを開発していますが、ユーザーのステータスに応じて、2つの異なるhtmlファイルを使用して2つのreturnrender_to_responseを使用するビューがあります。
ビューを2つの異なるビューに分割する方がよいのか、それともより大きなビューを維持する必要があるのか、疑問に思いました。
そうすることの長所と短所は何ですか?
私の質問が明確でない場合は申し訳ありません。アドバイスありがとうございます。
私はdjangoを使用してアプリを開発していますが、ユーザーのステータスに応じて、2つの異なるhtmlファイルを使用して2つのreturnrender_to_responseを使用するビューがあります。
ビューを2つの異なるビューに分割する方がよいのか、それともより大きなビューを維持する必要があるのか、疑問に思いました。
そうすることの長所と短所は何ですか?
私の質問が明確でない場合は申し訳ありません。アドバイスありがとうございます。
この質問に対する正しい答えも間違った答えもないので、あなたの質問はスタックオーバーフローでは受け入れられないかもしれません。これは通常、特定の技術的解決策に関する質問/問題を対象としています。
とは言うものの、このトピックに関する私の見解は次のとおりです。私は個人的に自分をview function
小さく保ち、さらに処理が必要な場合は、それらをより小さな関数に分割するのが好きです。
例えば:-
@permission_required('organizations.organization_add_user')
def organization_add_user(request, org_slug):
org = get_object_or_404(Organization, slug=org_slug)
form = OrganizationAddUserForm(org=org)
if request.method == 'POST':
form = OrganizationAddUserForm(request.POST or None, request.FILES or None, org=org)
if form.is_valid():
cd = form.cleaned_data
# Create the user object & send out email for activation
user = create_user_from_manual(request, data=cd)
# Add user to OrganizationUser
org_user, created = OrganizationUser.objects.get_or_create(user=user,\
organization=org)
dept = org.departments.get(name=cd['department'])
org_user.departments.add(dept)
# Add user to the appropriate roles (OrganizationGroup) and groups (django groups)
org_groups = OrganizationGroup.objects.filter(group__name__in=cd['roles'], \
organization=org)
for g in org_groups:
user.groups.add(g.group)
return HttpResponse(reverse('add_user_success'))
template = 'organizations/add_user.html'
template_vars = {'form': form}
# override request with dictionary template_vars
template_vars = FormMediaRequestContext(request=request, dict=template_vars)
return render(request, template, template_vars)
FormMediaEquestContext
は別のファイルからインポートするクラスであり、フォームに関連付けられたjavascriptファイルとcssファイルを処理するのに役立つ独自のロジックがあります(OrganizationAddUserForm
)。
create_user_from_manual
は、個別にカプセル化され、システムに新しいユーザーを作成し、その新しいユーザーに招待メールを送信することに関連するかなり複雑なロジックを処理する、さらに別の関数です。
そしてもちろん、ユーザーの追加フォームが正常に実行されたときに独自のビュー機能とテンプレートを使用して完全に異なるURLにリダイレクトするのではなく、ユーザーがこの「ユーザーの追加」ページに初めてアクセスする場合は、別のテンプレートを提供します。
ビュー関数を適度に小さく保つことで、特定の機能に関連するバグを簡単に追跡できます。
create_user_from_manual
さらに、別のビュー関数で同じユーティリティ関数が必要になった場合に、メソッドなどのユーティリティ関数を「再利用」するための良い方法でもあります。
ただし、結局のところ、コードの整理とコードのカプセル化は、開発者としての進歩に伴って行われる判断の呼びかけです。