#django #django-models
#django #django-модели
Вопрос:
Я надеюсь, что у вас все хорошо. Просто один вопрос, который меня сильно беспокоит в последнее время… У меня возникла проблема только при обновлении моей формы. Обновление работает после обновления страницы.
views.py в папке пользователя
#update detail
@method_decorator(login_required(login_url='/earlycooker/login/'),name="dispatch")
class UserProfileUpdateView(UpdateView):
model = UserProfile
template_name = 'profile-update.html'
form_class = UserProfileForm
success_message = "Profile updated"
def form_valid(self, form):
form.instance.user = self.request.user
form.save()
return super(UserProfileUpdateView, self).form_valid(form)
def get_success_url(self):
return reverse('update_profile',kwargs={'slug':self.object.slug})
def get(self,request,*args,**kwargs):
self.object = self.get_object()
if self.object.user != request.user:
return HttpResponseRedirect('/')
return super(UserProfileUpdateView, self).get(request,*args,**kwargs)
urls.py в папке пользователя
path('details/<slug:slug>/', UserProfileUpdateView.as_view(), name="update_profile"),
profile-update.html в папке пользователя
{% url 'user:update_profile' slug=user.userprofile.slug %}
Комментарии:
1. Как вы думаете,
return reverse('update_profile',kwargs={'slug':self.object.slug})
должно бытьreturn reverse('user:update_profile',kwargs={'slug':self.object.slug})
2. рад помочь 🙂
Ответ №1:
Из этого 'user:update_profile'
следует, что имя приложения (app_name) update_profile
URL является user
.
@method_decorator(login_required(login_url='/earlycooker/login/'),name="dispatch")
class UserProfileUpdateView(UpdateView):
model = UserProfile
template_name = 'profile-update.html'
form_class = UserProfileForm
success_message = "Profile updated"
def form_valid(self, form):
form.instance.user = self.request.user
form.save()
return super(UserProfileUpdateView, self).form_valid(form)
def get_success_url(self):
return reverse('user:update_profile',kwargs={'slug':self.object.slug})
def get(self,request,*args,**kwargs):
self.object = self.get_object()
if self.object.user != request.user:
return HttpResponseRedirect('/')
return super(UserProfileUpdateView, self).get(request,*args,**kwargs)