Как мне структурировать мои Django классы просмотра? - PullRequest
0 голосов
/ 17 апреля 2020

Я и друг о работе над проектом. У меня есть структура для работы с моими взглядами. Если я работаю с моделью User и хочу написать код для операции CRUD, я пишу с использованием четырех разных классов. Один для каждого, например, так:

class CreateUser(FormView):
    <code here>


class ReadUser(DetailView):
    <code here>


class UpdateUser(UpdateView):
    <code here>


class DeleteUser(DeleteView):
    <code here>

Каждый имеет соответствующий шаблон URL:

urlpatterns = [
    path("auth/users/create-user/", CreateUser().as_view(), name="create_user"),
    path("auth/users/<int:pk>", ReadUser().as_view(), name="user_detail"),
    path("auth/users/<int:pk>/update", UpdateUser().as_view(), name="update_user"),
    path("auth/users/<int:pk>/delete/", DeleteUser().as_view(), name="delete_user")
]

Он предлагает вместо этого все функции должны быть в одном классе и выполняться методами, как :

class UserView(View):
    <class variables>

    def post(self, request):
        <code here>

    def get(self, request):
        <code here>

    def patch(self, request):
        <code here>

    def delete(self, request):
        <code here>

И urlpatterns будут:

urlpatterns = [
    path("auth/users/", UserView.as_view(), name="user")
]

У меня есть следующие вопросы:

  1. Django -wise;
  2. Вообще;
  3. При рендеринге со стороны сервера в django;
  4. При написании API в django

Первый или второй?

1 Ответ

1 голос
/ 17 апреля 2020

Я думаю, что предложение вашего друга идет правильным путем, и я бы go чуть дальше.

Я рекомендую вам использовать Django Rest Framework . У него уже есть представления на основе классов, которые могут сэкономить вам много времени при кодировании.

В зависимости от степени настройки, которую вы хотите представить, вы можете выбрать между:

Представления API или Классы Generics с Mixins

Кроме того, я буду осторожен при смешивании регистрации пользователей и аутентификации пользователей. Обычно ресурсы "user (s)" и "auth" разделены.

В качестве последнего совета я рекомендую вам избегать самостоятельного создания процесса регистрации и аутентификации - хотя это хорошее учебное упражнение и go для существующего решения, либо через публичные c репозитории, либо через широкий спектр библиотек, которые могут предоставить вам токены, OAUTH2, социальный регистр и аутентификацию ( Social Django фи) и многое другое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...