Где разместить настроенные представления, которые наследуются от django -Alalauth? - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть проект Django, в котором есть одно приложение (опрос), поэтому в urls.py моего проекта у меня есть:

urlpatterns = [
    ...    
    path('accounts/', include('allauth.urls')),
    path('survey/',include(('survey.urls','survey'), namespace='survey')),
    ...]

Я использую django -allauth для обеспечения аутентификации механизм. Тем не менее, я унаследовал RegistrationView, который находится в Django -Allauth, следующим образом:

class MySignupView(SignupView):

    def form_valid(self.request):
        self.user = form.save(self.request)
        assignmentAttendance=AssignmentAttendance.objects.create(user=user, assignment=Assignment.objects.get(id=1), status=False)
        assignmentAttendance.save()
        assignmentAttendance = AssignmentAttendance.objects.create(user=user, assignment=Assignment.objects.get(id=2), status=False)
        assignmentAttendance.save()
        try:
        return complete_signup(
            self.request, self.user,
            app_settings.EMAIL_VERIFICATION,
            self.get_success_url())
    except ImmediateHttpResponse as e:
        return e.response

Дополнительный процесс (в переопределении form_valid) заключается в создании данных для другой модели в приложении опроса. Я не знаю лучшего места для размещения класса MySignupView, поэтому я помещаю его в urls.py проекта, а затем добавляю его представление в urlpatterns:

urlpatterns = [
        ...    
        path('accounts/', include('allauth.urls')),
        path('survey/',include(('survey.urls','survey'), namespace='survey')),
        path('accounts/signup', MySignupView.as_view(), name="account_signup"),
        ...]

Это работает, так как мой MySignupView - это то, что вызывается, когда пользователь желает зарегистрироваться вместо RegistrationView от Django -allauth.

Есть ли лучшая конфигурация для того, где писать собственные представления и где их помещать. Если так, как это должно быть сделано? Мне известно, что Django -allauth имеет способ добавления пользовательской формы по умолчанию, задав ACCOUNT_FORMS в файле settings.py.

Должен ли я создавать учетные записи вызовов приложения, а затем отображать MySignupView в его представлении или делать Я создаю util_views.py и помещаю в него MySignupView? Я спрашиваю, так как я могу написать свои собственные представления, наследуя от django -allauth.

...