Would somebody let me know if they think this is a bug in which case I'll 
open a ticket on Github or if I'm doing something wrong.

I'm getting the following exception on Python 3.5.2, Django 1.10.2, DRF 
3.4.7, mysqlclient 1.3.9 (everything is the latest and greatest).  

I have a url (/sources) and when a user submits '\' (url is now 
/sources?q=\) this gets thrown:

OperationalError at /sources
(1139, "Got error 'trailing backslash (\\)' from regexp")

Request Method: GET
Request URL: http://dev-centr.factr.com/sources?q=%5C
Django Version: 1.10.2
Python Executable: /var/virtualenvs/centr/bin/python
Python Version: 3.5.2
Python Path: ['/var/www/centr', '/var/virtualenvs/centr/src/newspaper3k', 
'/var/virtualenvs/centr/lib/python3.5', 
'/var/virtualenvs/centr/lib/python3.5/plat-x86_64-linux-gnu', 
'/var/virtualenvs/centr/lib/python3.5/lib-dynload', '/usr/lib/python3.5', 
'/usr/lib/python3.5/plat-x86_64-linux-gnu', 
'/var/virtualenvs/centr/lib/python3.5/site-packages', 
'/var/virtualenvs/centr/lib/python3.5/site-packages/newrelic-2.70.0.51', 
'/var/www/centr']
Server time: Thu, 13 Oct 2016 20:02:40 +0000
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'corsheaders',
 'notifications',
 'password_reset',
 'rest_framework',
 'rest_framework.authtoken',
 'rest_framework_cache',
 'storages',
 'apps.base',
 'apps.item',
 'apps.monitor',
 'apps.source',
 'apps.stream',
 'apps.user',
 'apps.geo',
 'apps.tag',
 'apps.oauth',
 'social.apps.django_app.default',
 'health_check',
 'health_check_cache',
 'health_check_storage']
Installed Middleware:
['apps.base.middleware.StripCookieForExtensionMiddleware',
 'corsheaders.middleware.CorsMiddleware',
 'django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']


Traceback:  

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/db/backends/utils.py"
 
in execute
  64.                 return self.cursor.execute(sql, params)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/db/backends/mysql/base.py"
 
in execute
  110.             return self.cursor.execute(query, args)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/MySQLdb/cursors.py" in 
execute
  250.             self.errorhandler(self, exc, value)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/MySQLdb/connections.py" 
in defaulterrorhandler
  42.         raise errorvalue

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/MySQLdb/cursors.py" in 
execute
  247.             res = self._query(query)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/MySQLdb/cursors.py" in 
_query
  411.         rowcount = self._do_query(q)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/MySQLdb/cursors.py" in 
_do_query
  374.         db.query(q)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/MySQLdb/connections.py" 
in query
  270.             _mysql.connection.query(self, query)
  
    
      The above exception ((1139, "Got error 'trailing backslash (\\)' from 
regexp")) was the direct cause of the following exception:
    
  

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/core/handlers/exception.py"
 
in inner
  39.             response = get_response(request)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/core/handlers/base.py"
 
in _legacy_get_response
  249.             response = self._get_response(request)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/core/handlers/base.py"
 
in _get_response
  187.                 response = self.process_exception_by_middleware(e, 
request)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/core/handlers/base.py"
 
in _get_response
  185.                 response = wrapped_callback(request, *callback_args, 
**callback_kwargs)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/views/decorators/csrf.py"
 
in wrapped_view
  58.         return view_func(*args, **kwargs)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/rest_framework/viewsets.py" 
in view
  87.             return self.dispatch(request, *args, **kwargs)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/rest_framework/views.py" 
in dispatch
  474.             response = self.handle_exception(exc)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/rest_framework/views.py" 
in handle_exception
  434.             self.raise_uncaught_exception(exc)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/rest_framework/views.py" 
in dispatch
  471.             response = handler(request, *args, **kwargs)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/rest_framework/mixins.py" 
in list
  42.         page = self.paginate_queryset(queryset)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/rest_framework/generics.py" 
in paginate_queryset
  172.         return self.paginator.paginate_queryset(queryset, 
self.request, view=self)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/rest_framework/pagination.py"
 
in paginate_queryset
  210.             self.page = paginator.page(page_number)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/core/paginator.py" 
in page
  50.         number = self.validate_number(number)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/core/paginator.py" 
in validate_number
  39.         if number > self.num_pages:

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/utils/functional.py" 
in __get__
  35.         res = instance.__dict__[self.name] = self.func(instance)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/core/paginator.py" 
in num_pages
  84.         if self.count == 0 and not self.allow_empty_first_page:

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/utils/functional.py" 
in __get__
  35.         res = instance.__dict__[self.name] = self.func(instance)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/core/paginator.py" 
in count
  72.             return self.object_list.count()

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/db/models/query.py" 
in count
  369.         return self.query.get_count(using=self.db)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/db/models/sql/query.py"
 
in get_count
  476.         number = obj.get_aggregation(using, ['__count'])['__count']

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/db/models/sql/query.py"
 
in get_aggregation
  457.         result = compiler.execute_sql(SINGLE)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/db/models/sql/compiler.py"
 
in execute_sql
  835.             cursor.execute(sql, params)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/db/backends/utils.py"
 
in execute
  79.             return super(CursorDebugWrapper, self).execute(sql, 
params)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/db/backends/utils.py"
 
in execute
  64.                 return self.cursor.execute(sql, params)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/db/utils.py" in 
__exit__
  94.                 six.reraise(dj_exc_type, dj_exc_value, traceback)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/utils/six.py" in 
reraise
  685.             raise value.with_traceback(tb)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/db/backends/utils.py"
 
in execute
  64.                 return self.cursor.execute(sql, params)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/django/db/backends/mysql/base.py"
 
in execute
  110.             return self.cursor.execute(query, args)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/MySQLdb/cursors.py" in 
execute
  250.             self.errorhandler(self, exc, value)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/MySQLdb/connections.py" 
in defaulterrorhandler
  42.         raise errorvalue

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/MySQLdb/cursors.py" in 
execute
  247.             res = self._query(query)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/MySQLdb/cursors.py" in 
_query
  411.         rowcount = self._do_query(q)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/MySQLdb/cursors.py" in 
_do_query
  374.         db.query(q)

File 
"/var/virtualenvs/centr/lib/python3.5/site-packages/MySQLdb/connections.py" 
in query
  270.             _mysql.connection.query(self, query)

Exception Type: OperationalError at /sources
Exception Value: (1139, "Got error 'trailing backslash (\\)' from regexp")

Here is the viewset (SourceSerializer is 
a serializers.HyperlinkedModelSerializer and Source is just a model)

class SourceViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows sources to be viewed or edited.
    """
    filter_backends = (filters.SearchFilter, filters.OrderingFilter,)
    search_fields = ('$name', '$url')
    queryset = Source.objects.filter(active=True)
    serializer_class = SourceSerializer



-- 
You received this message because you are subscribed to the Google Groups 
"Django REST framework" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-rest-framework+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to