Я следую учебному пособию под названием Raw Delete Class Based View, Raw Update, list и detail View Based View соответственно. Я понимаю все, кроме одного.
in course_list.html
У меня есть следующая ссылка:
<a class="delete-btn" href="{% url 'courses:course-delete' obj.id %}">Delete</a>
Если пользователь щелкнет и подтвердит удаление, он удалит этот курс из списка курсов.
Вопрос в том, почему инструктор проверяет if id is not None:
? даже , если он пропустит это из кода, он все равно будет работать нормально . Более того, есть нулевые шансы для 'id' быть None , так как пользователь нажимает на форму, подобную приведенной ниже, и ссылка ведет пользователя к определенному маршруту, который в конечном итоге удаляет этот конкретный курс. Пожалуйста, помогите мне понять это!
![enter image description here](https://i.stack.imgur.com/6Dgo1.png)
Это код:
class CourseDeleteView(View):
template_name = "course/course-delete.html"
def get_object(self):
id = self.kwargs.get('id')
obj = None
if id is not None: # why would he do that?
obj = get_object_or_404(Course, id=id)
return obj
def get(self, request, id=None, *args, **kwargs):
context = {}
obj = self.get_object()
if obj is not None: # here, why checking obj for not None?
context['object'] = obj
return render(request, self.template_name, context)
def post(self, request, id=None, *args, **kwargs):
context = {}
obj = self.get_object()
if obj is not None: # and here
obj.delete()
context['object'] = None
return redirect('/course/')
return render(request, self.template_name, context)
Заранее спасибо
изменить: urls.py
app_name = 'courses'
urlpatterns = [
path('courses/<int:id>/delete/',
CourseDeleteView.as_view(), name='course-delete'),
]