Начало работы с DJango REST Framework SyntaxError: неверный синтаксис - PullRequest
0 голосов
/ 26 ноября 2018

Я новичок в python и еще новее в DJANGO.Я уже писал два приложения на Python, но оно в свободной форме.Я начал изучать DJANGO Rest Framework:run python manage.py runserver дает мне:

Performing system checks...

Unhandled exception in thread started by <function wrapper at 0x10350c410>
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/django/utils/autoreload.py", line 228, in wrapper
    fn(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/django/core/management/commands/runserver.py", line 124, in inner_run
    self.check(display_num_errors=True)
  File "/Library/Python/2.7/site-packages/django/core/management/base.py", line 359, in check
    include_deployment_checks=include_deployment_checks,
  File "/Library/Python/2.7/site-packages/django/core/management/base.py", line 346, in _run_checks
    return checks.run_checks(**kwargs)
  File "/Library/Python/2.7/site-packages/django/core/checks/registry.py", line 81, in run_checks
    new_errors = check(app_configs=app_configs)
  File "/Library/Python/2.7/site-packages/django/core/checks/urls.py", line 16, in check_url_config
    return check_resolver(resolver)
  File "/Library/Python/2.7/site-packages/django/core/checks/urls.py", line 26, in check_resolver
    return check_method()
  File "/Library/Python/2.7/site-packages/django/urls/resolvers.py", line 256, in check
    for pattern in self.url_patterns:
  File "/Library/Python/2.7/site-packages/django/utils/functional.py", line 35, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/Library/Python/2.7/site-packages/django/urls/resolvers.py", line 407, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "/Library/Python/2.7/site-packages/django/utils/functional.py", line 35, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/Library/Python/2.7/site-packages/django/urls/resolvers.py", line 400, in urlconf_module
    return import_module(self.urlconf_name)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/Users/devindixon/Sites/Hearst/tutorial/tutorial/urls.py", line 18, in <module>
    from rest_framework import routers
  File "/Library/Python/2.7/site-packages/rest_framework/routers.py", line 25, in <module>
    from rest_framework import views
  File "/Library/Python/2.7/site-packages/rest_framework/views.py", line 16, in <module>
    from rest_framework import exceptions, status
  File "/Library/Python/2.7/site-packages/rest_framework/exceptions.py", line 17, in <module>
    from rest_framework.utils.serializer_helpers import ReturnDict, ReturnList
  File "/Library/Python/2.7/site-packages/rest_framework/utils/serializer_helpers.py", line 8, in <module>
    from rest_framework.compat import unicode_to_repr
  File "/Library/Python/2.7/site-packages/rest_framework/compat.py", line 77, in <module>
    import django_filters
  File "/Library/Python/2.7/site-packages/django_filters/__init__.py", line 4, in <module>
    from .filterset import FilterSet
  File "/Library/Python/2.7/site-packages/django_filters/filterset.py", line 184
    def __init__(self, data=None, queryset=None, *, request=None, prefix=None):
                                                  ^
SyntaxError: invalid syntax

Это моя ошибка или системная ошибка?В соответствии с трассировкой стека, он попадает только в мой код по адресу /tutorial/tutorial/urls.py

from django.conf.urls import url, include
from rest_framework import routers <----THIS IS LINE 18
from tutorial.quickstart import views

router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)

# Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API.
urlpatterns = [
    url(r'^', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Мои два цента: как @ 9769953 и @Livonia сказали, что версия django-filter, которую вы используете, использует синтаксис https://github.com/carltongibson/django-filter/blob/master/django_filters/filterset.py#L184 Python 3.x, несовместимый с Python 2.7, так что эта версия.Новый синтаксис указан в https://www.python.org/dev/peps/pep-3102/.

Ошибка, которую вы получаете, находится в строке 184:

File "/Library/Python/2.7/site-packages/django_filters/filterset.py", line 184
def __init__(self, data=None, queryset=None, *, request=None, prefix=None):
                                              ^

SyntaxError: invalid syntax

Итак:

pip install "django-filter<2.0"

исправит вашу проблему

0 голосов
/ 26 ноября 2018

Вы используете Python 2.7, который несовместим с последней версией django-filter, как вы можете видеть здесь

Пожалуйста, рассмотрите возможность понижения:

pip install "django-filter<2.0"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...