Django: Не отображаются параметры атрибутов объекта запроса

Я впервые начал использовать django. При создании представления функции я хотел посмотреть, какие атрибуты есть у объекта запроса (метод и т.д.), и я ожидал, что VSC покажет все опции для request.option. Но объект запроса ничего не показывает.

Интересно, это что-то из конфигурации расширений для django, чтобы помочь с автозаполнением или показом опций, или это обычная вещь.

def index(request): print( request.) return HttpResponse("Hello, World!")

Я взял этот код в качестве примера того, что я хотел бы видеть, и я ожидал, что vsc покажет список опций для просмотра свойств объекта запроса:

def xyz(request): item1 = request.GET['item1'] user = request.user

Например, если я сделаю request.me, то автозаполнение сделает что-то вроде этого о запросе класса:

def index(request): request.(self, *args, **kwargs): return super().(*args, **kwargs)

Конечно, мне это не нужно, но я хотел бы видеть опции и автозаполнение объекта запроса. Например, чтобы проверить, является ли запрос методом GET или POST.

Хотелось бы узнать, связано ли это с настройкой VSC при работе с django, или это нормальное поведение.

Я искал в разных местах, но не нашел ничего об этом. Я хотел бы знать, есть ли что-то в настройках vsc, что я должен решить, или это нормальное поведение.

Это связано с тем, что Django делает слишком много метапрограммирования, чтобы IDE могла его понять. Однако вы можете намекнуть на это с помощью:

from django.http import HttpRequest


def index(request: HttpRequest):
    # …
    pass

Большинство IDE поймут, что это объект HttpRequest, и таким образом помогут с автокомплиментацией.

Но все же Python - очень динамичный язык, и промежуточное ПО может добавлять атрибуты динамически, поэтому автодополнение в Python не очень удобно. В таких IDE, как PyCharm, есть выпуски, в которые они "вливают" знания о Django, чтобы сделать его более эффективным, но это скорее "трюки", чем анализ мета-программирования.

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