Форма UpdateView для редактирования профиля пользователя не отображается. Django

Я пытаюсь сделать UpdateView для редактирования профиля пользователя без pk или slug, используя get_object() с self.request.user. Но когда я запускаю свои настройки, форма не отображается. Вот мой код:

urls.py:

urlpatterns = [
    path('settings/', UserSettings.as_view(), name='settings'),
    path('<slug:profile_slug>/', ShowUserProfile.as_view(), name='profile'),
]

views.py:

class UserSettings(LoginRequiredMixin, DataMixin, UpdateView):
    template_name = 'users/user_settings.html'
    form_class = UpdateUserForm

    def get_object(self, *args, **kwargs):
        return self.request.user

    def get_success_url(self):
        return reverse_lazy('profile', kwargs={'profile_slug': self.request.user.userpofile.slug})

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        c_def = self.get_user_context(title='Settings')

forms.py:

class UpdateUserForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ('username', 'password')
        widgets = {'username': forms.TextInput(attrs={'class': 'form-control form-input form__input'}),
                   'password': forms.TextInput(attrs={'class': 'form-control form-input form__input'})}

user_settings.html:

                <form class="form" method="post">
                    {% csrf_token %}

                    {% for item in form %}
                    <div class="row">
                        <div class="col-sm-4">
                            <label class="form__label" for="{{item.id_for_label}}">{{item.label}}: </label>
                        </div>
                        <div class="col-sm-8">
                            {{item}}
                        </div>
                    </div>

                    <div class="form__errors">{{item.errors}}</div>
                    {% endfor %}

                    <button class="button" type="submit">Set settings</button>
                </form>

Он даже не выдает ошибку. Что мне нужно сделать?

Вам нужно вернуть функцию get_context_data, например, так:

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    c_def = self.get_user_context(title='Settings')
    return context
Вернуться на верх