TypeError at /registration/login/ sequence item 0: expected string or Unicode, function found in Django 1.11

178 Views Asked by At

I am modifying Gitstack, a 32bit Python2.7-based Git Web Application (available here) for my 64bit Python installation.

In the process, I also had to modify all the Django codes e.g. urlpatterns, etc.

While I managed to adapt it to my Apache/PHP environment, I ended up with this Django issue.

The error is as below while trying to access /gitstack location

TypeError at /registration/login/

sequence item 0: expected string or Unicode, function found

Request Method:     GET
Request URL:    https://localhost/registration/login/?next=/gitstack/
Django Version:     1.11.6
Exception Type:     TypeError
Exception Value:    

sequence item 0: expected string or Unicode, function found'

I could not make any useful insight from the traceback below with my little head. The traceback just ends inside Django which seems very little helpful.

Environment:

Request Method: GET
Request URL: https://localhost/registration/login/?next=/gitstack/

Django Version: 1.11.6
Python Version: 2.7.13
Installed Applications:
('django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'gitstack')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware')

Traceback:

File "C:\Python27\lib\site-packages\django\core\handlers\exception.py" in inner
  41.             response = get_response(request)

File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in _legacy_get_response
  249.             response = self._get_response(request)

File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in _get_response
  172.         resolver_match = resolver.resolve(request.path_info)

File "C:\Python27\lib\site-packages\django\urls\resolvers.py" in resolve
  366.                     sub_match = pattern.resolve(new_path)

File "C:\Python27\lib\site-packages\django\urls\resolvers.py" in resolve
  201.             return ResolverMatch(self.callback, args, kwargs, self.name)

File "C:\Python27\lib\site-packages\django\urls\resolvers.py" in __init__
  55.         self.view_name = ':'.join(self.namespaces + [view_path])

Exception Type: TypeError at /registration/login/
Exception Value: sequence item 0: expected string or Unicode, function found

Below is my modified app\urls.py:

from django.conf.urls import url, include
from django.contrib.auth.views import login
# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

urlpatterns = [
    # Examples:
    #url(r'^$', 'app.views.home', name='home'),
    # url(r'^app/', include('app.foo.urls')),
    # login 
    url(r'^registration/login/$', login, name=login),
    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    # url(r'^admin/', include(admin.site.urls)),
    url(r'^gitstack/', include('gitstack.urls')),
   # url(r'^rest/', include('rest.urls')),

]

Here is my modified gitstack/urls.py

from django.conf.urls import url, include
from .views import index, users, groups, repository_permission, add_repo_user_dialog, add_repo_group_dialog, group_user, add_group_user_dialog, settings_general, settings_authentication, settings_security, log_me_out
urlpatterns = [
    # standard user interface
    url(r'^$', index, name='index'),
    url(r'^users/', users, name='users'),
    url(r'^groups/', groups, name='groups'),
    url(r'^repository/(?P<repo_name>.+)/permission/$', repository_permission, name='repository_permission'),
    # add users dialog
    url(r'^repository/(?P<repo_name>.+)/permission/adduser/$', add_repo_user_dialog, name= 'add_repo_user_dialog'),
    url(r'^repository/(?P<repo_name>.+)/permission/addgroup/$', add_repo_group_dialog, name='add_repo_group_dialog'),

    url(r'^group/(?P<group_name>.+)/user/$', group_user, name='group_user'),
    # add users dialog (for the group)
    url(r'^group/(?P<group_name>.+)/user/add/$', add_group_user_dialog, name='add_group_user_dialog'),

    # settings tab
    url(r'^settings/general/', settings_general, name='settings_general'),
    url(r'^settings/authentication/', settings_authentication, name='settings_authentication'),
    url(r'^settings/security/', settings_security, name='settings_security'),

    url(r'^logout/', log_me_out, name='log_me_out'),

]
1

There are 1 best solutions below

1
On

urlpatterns should be a Python list of url() instances. So you need to remove 'gitstack.views', from urlpatterns in gitstack/urls.py

UPD

Also you have problem with login pattern. Name should be string. Change url(r'^registration/login/$', login, name=login) to url(r'^registration/login/$', login, name='login')