Есть ли эффективная замена моему django коду? - PullRequest
0 голосов
/ 28 апреля 2020

views.py

def redirectory(request):
    if request.user.is_Type_A:
        return redirect("is_Type_A_views")#This loads Type_A html page
    elif request.user.is_Type_B:
        return redirect("is_Type_B_views")#This loads Type_B html page
    elif request.user.is_Type_C:
        return redirect("is_Type_C_views")#This loads Type_C html page

Привет, я создал функцию входа в django views.py, которая проверяет, является ли
пользователь is_Type_A или is_Type_B или is_Type_ C и регистрирует ли он в пользовательские пользовательские страницы на основе их логических полей True или False. Я не хотел использовать фильтры, потому что пользователи аккаунта должны иметь доступ к различным функциям на views.py, и я не хотел использовать условные операторы на странице html, потому что я не хочу путать себя и других людей так Я создал этот код вместо этого. Так что это в основном функция перенаправления.

Мой вопрос: эффективен ли этот код? может ли сервер использовать этот единственный код и обрабатывать несколько запросов на вход? И если нет, то есть ли более эффективный код замены, который я могу использовать?

1 Ответ

0 голосов
/ 28 апреля 2020

На данный момент этот код находится на грани возможности чтения / сопровождения.

Однако, если у вас будет еще несколько типов пользователей, я бы преобразовал их в словарь. Вам потребуется выполнить некоторый рефакторинг, чтобы переместить пользовательский тип из того, что он есть сейчас (логическое значение, я думаю, user.is_Type_A), в какую-то постоянную строку (или Enum, предпочтительно), как request.user.user_type, * 1006. *

тогда:

redirection_dict = {
    USER_TYPE_A: redirect("is_Type_A_views"),
    USER_TYPE_B: redirect("is_Type_B_views"),
    USER_TYPE_C: redirect("is_Type_C_views"),
}

def redirectory(request):
    return redirection_dict.get(request.user.user_type, '404')
...