NoReverseMatch в / accounts / dashboard - PullRequest
0 голосов
/ 02 марта 2020

Я новичок ie в django. Я пытаюсь создать это приложение, где у меня есть страницы c "РЕДАКТИРОВАТЬ ПРОФИЛЬ" и "Панель инструментов". Но когда я пытаюсь сделать его динамичным c, я могу создать его и получить к нему доступ (например, http://127.0.0.1: 8000 / account / edit / 32 / http://127.0.0.1: 8000 / account / dash / 32 / )

Однако, когда я пытаюсь поместить эти недавно созданные динамические c ссылки на другую страницу html, чтобы пользователи могли получить к ней доступ, я получаю ошибку NoReverse Match. Я застрял здесь последние пять дней и пробовал разные вещи. Ничего не получилось. Я действительно расстраиваюсь. Пожалуйста, помогите мне исправить это. Спасибо.

models.py

     class Profile(models.Model):
         user = models.OneToOneField(User, on_delete = models.CASCADE)
         nationality = models.CharField(max_length=50, blank=True,null=True) #Don't see any use of it 
         exam_1 =models.CharField(blank= True, null = True, max_length= 20)

         def __str__(self):
              return "Profile of user {}".format(self.user.username) 

views.py

        def editt_profile(request, profile_id):
           prof_view =get_object_or_404(Profile,pk =profile_id)
           context = {
                'prof_view': prof_view,
                  }
           return render(request, 'accounts/profile_detail.html', context)

        def dash(request, profile_id):
           p_view =get_object_or_404(Profile,pk=profile_id)
           context = {
               'p_view': p_view,      
                     }
           return render(request, 'accounts/newdashboard.html', context)

urls.py

        path("edit/<int:profile_id>/", views.editt_profile, name='editt_profile'),
        path('dash/<int:profile_id>/', views.dash, name = 'dash'),

newdashboard. html (в этом страница Я хочу предоставить ссылки на вышеуказанные URL-адреса для пользователей)

        <li
          {% if 'editt_profile' in request.path %}
          class="nav-item active mr-3"
          {% else %}
          class="nav-item mr-3"
          {% endif %}
          >
         <a class="nav-link" href= "{% url 'editt_profile' prof_view.id%}">
            New Edit</a>
         </li>

         <li
           {% if 'dash' in request.path %}
           class="nav-item active mr-3"
           {% else %}
           class="nav-item mr-3"
           {% endif %}
           >
           <a class="nav-link" href= "{% url 'dash' p_view.id  %}">
             New Dashboard</a>
         </li>

Ответы [ 2 ]

0 голосов
/ 03 марта 2020

Эта ошибка возникает, когда тег шаблона URL не может сгенерировать соответствующий URL.
, если вы напишите {% url 'edit_profile' 1%}, тогда он сгенерирует URL-адрес следующим образом

localhost:8000/../edit/1/  

Итак, если третий параметр тега url не получил никакого значения, он генерирует url, подобный этому

localhost:8000/../edit/  

, и это не будет совпадать ни с одним url. Вам следует знать об этом третьем параметре prof_view.id.
Передали ли вы ключ prof_view в контексте, откуда вы рендерили панель инструментов. html? или ваша панель инструментов. html получить какое-либо значение для ключевого слова prof_view? Итак,

измените ваш тег

{% url 'editt_profile' prof_view.id%}

на

{% url 'editt_profile' p_view.id%}

, потому что ваш параметр контекста - p_view, а не prof_view. и в views.py измените имя шаблона на «account / dashboard». html '

0 голосов
/ 03 марта 2020

Вы используете prof_view.id здесь, но откуда он ловит идентификатор? {% url 'editt_profile' prof_view.id%} ">

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...