我正在使用 Django 1.7.1,我将安装的 django-filters pip 安装到我的虚拟环境中
/.virtualenvs/auction2/lib/python2.7/site-packages$
表示安装成功。
所以我将 django-filters 放置在已安装的应用程序中,如下所示:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'crispy_forms',
'django_filters',
'donations',
)
我运行了
python manage.py runserver
并得到了这个错误:
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/Users/Dani/.virtualenvs/auction2/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
utility.execute()
File "/Users/Dani/.virtualenvs/auction2/lib/python2.7/site-packages/django/core/management/__init__.py", line 354, in execute
django.setup()
File "/Users/Dani/.virtualenvs/auction2/lib/python2.7/site-packages/django/__init__.py", line 21, in setup
apps.populate(settings.INSTALLED_APPS)
File "/Users/Dani/.virtualenvs/auction2/lib/python2.7/site-packages/django/apps/registry.py", line 85, in populate
app_config = AppConfig.create(entry)
File "/Users/Dani/.virtualenvs/auction2/lib/python2.7/site-packages/django/apps/config.py", line 87, in create
module = import_module(entry)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named django_filters
明明已经安装了,但是为什么导入不了呢?我有另一个包,脆皮形式,安装并工作。我查看了虚拟环境中的站点包,我看到:
crispy_forms
django
django_braces-1.4.0.dist-info
django_crispy_forms-1.4.0-py2.7.egg-info
django_filters-0.1.0-py2.7.egg-info
easy_install.py
easy_install.pyc
filters
pip
看到它作为“过滤器”输入,而不是文档所说的将其导入为(django_filters),我想我应该尝试将其更改为“installed_apps”中的“过滤器”。
我停止并启动了运行服务器,没问题,所以我开始在
filter.py
中构建我的过滤器:
import django_filters
from donations.models import Donor, Item, Issue
class DonorFilter(django_filters.FilterSet):
class Meta:
model = Donor
fields = {'type':['exact'],'donor':['icontains'],}
def __init__(self, *args, **kwargs):
super(DonorFilter, self).__init__(*args, **kwargs)
self.filters['type'].extra.update(
{'empty_label': 'All Types'})
我停止并启动运行服务器,没有问题。然后我开始在views.py中添加一个视图和导入语句:
from donations.filters import DonorFilter
给了我同样的
ImportError: No module named django_filters.
错误。
我尝试将filters.py中的导入更改为filters而不是django_filters,并且错误没有改变。我按照文档说明将所有内容更改回 django_filters (在Installed_apps 和我的filters.py 中),当我添加视图时,我收到错误
global name 'DonorFilter' is not defined
。这是view.py:
def donor_list(request):
f = DonorFilter(request.GET, queryset=Donor.objects.all())
return render_to_response('donations/donor_list', {'filter': f})
这意味着我需要导入我在filters.py中创建的函数?所以我添加
from donations.filters import DonorFilter
到我视野的顶部。
那么错误就是'module' object has no attribute 'FilterSet'
我可以在安装在我的 virtualenv 中的filters.py 文件中看到 FilterSet 类
我注意到 django-filter 有更多的开发,https://github.com/alex/django-filter 页面已升级到 v0.9.2,但 pip 安装的是 0.1.0。我应该以其他方式安装它(除了 pip 之外)吗?
我对此很陌生,感谢任何帮助!
我的 pip 版本很旧,真的很旧。 1.5.6 当我安装虚拟环境时,它就可以工作了,所以我没有提出疑问。学过的知识!这是我所做的,以防对其他人有帮助......
在虚拟环境中,我按照文档中的描述安装了pip: https://pip.pypa.io/en/stable/installing.html
python get-pip.py
这将我升级到了 pip 6.1.1
pip install django-filter
pip freeze > requirements.txt
阅读requirements.txt表明我有
django-filter==0.9.2
django-filters==0.1.0
所以我用
pip uninstall django-filters
卸载了旧版本
注意旧版本上有 s,但新版本上没有
确实是基本的东西,但它确实让我绊倒了。感谢任何花时间调查此问题的人!
我也有同样的问题。即使安装后
django-filters
我也无法导入它
导入错误:没有名为 django_filters 的模块
我使用的Django版本是1.8,python版本是2.7.x
解决方案是安装
djangorestframework-filters
pip install djangorestframework-filters
这些名字很混乱。
但是
django-rest-framework-filters
是 Django REST 框架和 Django 过滤器的扩展,可以轻松跨关系进行过滤,而 Django-filter
是一个可重用的 Django 应用程序,允许用户以声明方式从 URL 参数添加动态 QuerySet 过滤。
我在安装 django-filter==2.2.0 时也遇到了这个问题
这是我的 Django 版本:
Django [required: >=1.11, installed: 2.2]
设置.py:
INSTALLED_APPS = [
# ...
'django_filter',
]
这是正确的安装:
pipenv install django-filter
希望有帮助。
我使用 django 1.7、djangorestframework==3.2.0 和最新的 django-filter==0.13.0 时遇到了类似的问题:
Using DjangoFilterBackend, but django-filter is not installed
cannot import name Expression
我最终通过将 django-filter 降级到 0.11 来修复它。
现在 pip freeze 看起来像这样及其工作原理:
Django==1.7
django-filter==0.11.0
djangorestframework==3.2.0
我在已安装的应用程序中从
django_filter
更改为 django_filters
,没问题。
我们使用以下方式安装它:
pip install django-filter
或者如果您使用的是pipenv等虚拟环境,请使用pipenv install django-filter .
上述安装,添加了最新版本的 django-filter。添加“==version”来指定您需要的版本(比如0.11.0)
在app下的settings.py中,确保它是
'django_filters',
INSTALLED_APPS = [
# ...
'django_filters',
]
我尝试了以上所有答案,但没有一个对我有用。后来我了解到 pip 脚本没有为 python 命令正在使用的解释器安装模块。
解决方案:
python -m pip install django-filter
我在设置
django_filters
中删除了INSTALLED_APPS
。这对我有用
我也遇到了同样的问题,但我意识到这是因为我在虚拟环境中安装了 django-filter 。 我尝试在同一目录中安装 django-filter 而不激活虚拟环境,并且它有效
我用过
pip install django-filter
确保 settings.py 中是
django_filters
而不是 django-filters
。还要继续发现它不是django-filter
,而是django-filters
。
但要安装它:
pip install django-filter