更新时间:2022-01-19 07:45:24
不需要涉及模型——你可以使用 FormView
.它看起来像这样:
There doesn't need to be a model involved -- you can use a FormView
. It would look something like this:
from django.core.urlresolvers import reverse
from django.utils.decorators import method_decorator
from django.contrib.auth.decorators import login_required
from django.views.generic.edit import FormView
from myapp.forms import PasswordChangeFormPrivate
class ProfileChangePassword(FormView):
form_class = PasswordChangeFormPrivate
success_url = reverse('profile_view_details')
template_name = 'profiles/profile_change_password.html'
def get_form_kwargs(self):
kwargs = super(ProfileChangePassword, self).get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs
def form_valid(self, form):
form.save()
messages.add_message(self.request, messages.INFO, _('profile changed'))
return super(ProfileChangePassword, self).form_valid(form)
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(ProfileChangePassword, self).dispatch(*args, **kwargs)
我不知道你为什么有
user = get_object_or_404(User, username__iexact=request.user.username)
无论如何您都需要登录表单,因此 request.user
保证是有效用户.
You require login for the form anyway, so request.user
is guaranteed to be a valid user.