Форма 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