Несоответствия операторов импорта - PullRequest
2 голосов
/ 26 мая 2020

Почему второй оператор ниже не работает, хотя он функционально эквивалентен первому?

from django.shortcuts import render # works
import django.shortcuts.render as render # doesn't work

Ответы [ 4 ]

2 голосов
/ 26 мая 2020

Причина в том, что render() - это функция из модуля django.shortcuts.

Вы можете импортировать модуль только в python, а не работать напрямую.

так что вы можете сделать :

from module import specific_function

или просто

import module

или псевдоним только модуля

import module as xyz

или псевдоним specific_function из модуля

from module import specific_function as abc
2 голосов
/ 26 мая 2020

Ошибка сообщает вам, почему: render не является модулем.

Пример, который может прояснить - давайте попробуем импортировать функцию из модуля math:

>>> import math.pow
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named pow
>>> from math import pow
>>>

Функция pow не модуль, а символ (т.е. функция) может быть импортирована из модуля (math).

render() в django .shortcuts - это функция . Это не модуль.

2 голосов
/ 26 мая 2020

Это потому, что вам нужно запустить import django или from django.(whatever you want) import (your func or var). Python не любит, когда вы вызываете import (your module).(whatever path), потому что тогда вы импортируете путь. Кроме того, django.shortcuts.render не является существующим модулем, вам необходимо импортировать render, который является функцией.

2 голосов
/ 26 мая 2020

Потому что render - это функция, а вы можете только import модулей.

Можно from a_module import an_object, но можно только import a_module as whatever.

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