Python - Прицепные косые черты в конце URL Django

Я делал приложение, в котором есть части для обновления и удаления объектов (кошек) из моей базы данных.

Раньше URL для обновления данных о кошке был записан в urls.py в urlpatterns как :

# in cats/urls.py

path('updatecat/<int:cat_id>',views.Cat_Update.as_view(),name="update_cat"),

и вид был примерно такой :

# in cats/views.py

class Cat_Update(LoginRequiredMixin, UpdateView):
    model = Cat
    fields = "__all__"
    success_url = reverse_lazy("cats:main")
    template_name = 'cats/updatecat.html'
    def get_query_set(self, request):
        return Cat.objects.filter(id=escape(request.GET['cat_id']))   
    

#I was editing the get_query_set because I wasn't sure what the name of the argument 
#needed to be written in the URL to be passed to the UpdateView is, and I want to finish as soon 
#as possible. But I think now that the name may not be too important, right? If it is not 
#allowed to answer more than one question, it's okay.

шаблон выглядел следующим образом:

<!--in cats/templates/cats/updatecat.html-->

<html>
    <body>
        <h1>Edit Cat</h1>
        <form action = "{% url 'cats:update_cat' object.id %}" method="post">
            {% csrf_token %}
            {{ form.as_p }}
            <input class="cats_sbmt" type="submit" value="Submit"/>
        </form>
    </body>
</html>

и когда я перехожу по этому url, он выдает ошибку

Общее детальное представление Cat_Update должно вызываться либо с объектом pk, либо со slug в URLconf.

Когда я добавил прицепной слэш в конце url в urls.py, ошибка была исправлена.

path('updatecat/<int:cat_id>/',views.Cat_Update.as_view(),name="update_cat"),

Я не очень хорошо понял. Тогда я прочитал, что прицепной слэш обычно используется для различения файла без слэша и каталога со слэшем .

Но в другом приложении, url :

path('<int:question_id>',views.getquestion_or404_getobjor404,name="getqnew"),

работает нормально без слеша в конце

его мнение - это что-л. вроде :

def getquestion_or404_getobjor404(request, question_id):
    question = get_object_or_404(Question, id=question_id)
    request.session['qid'] = question_id
    return render(request, 'polls/aQuestion.html', {'question':question,'question_id':question_id,'request':request.GET,'links_names':links_names,'cookies':request.COOKIES})

Итак, в чем же разница?

Вернуться на верх