Обратный для ‘update_profile’ не найден. ‘update_profile’ не является допустимым именем функции просмотра или шаблона

#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)