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})
Итак, в чем же разница?