/registration/login/sequence项0处的TypeError:应为字符串或Unicode,函数在D



我正在修改Gitstack,这是一个基于32位Python2.7的Git Web应用程序(此处提供),用于我的64位Python安装。

在这个过程中,我还必须修改所有Django代码,例如urlpatters等。

当我设法将它适应Apache/PHP环境时,我最终遇到了这个Django问题。

尝试访问/gitstack位置时出现如下错误

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'

我用我的小脑袋从下面的回溯中找不到任何有用的见解。回溯只是在Django内部结束,这似乎没有什么帮助。

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')

追溯:

File "C:Python27libsite-packagesdjangocorehandlersexception.py" in inner
41.             response = get_response(request)
File "C:Python27libsite-packagesdjangocorehandlersbase.py" in _legacy_get_response
249.             response = self._get_response(request)
File "C:Python27libsite-packagesdjangocorehandlersbase.py" in _get_response
172.         resolver_match = resolver.resolve(request.path_info)
File "C:Python27libsite-packagesdjangourlsresolvers.py" in resolve
366.                     sub_match = pattern.resolve(new_path)
File "C:Python27libsite-packagesdjangourlsresolvers.py" in resolve
201.             return ResolverMatch(self.callback, args, kwargs, self.name)
File "C:Python27libsite-packagesdjangourlsresolvers.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

以下是我修改的appurls.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')),
]

这是我修改过的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'),
]

urlpatters应该是url()实例的Python列表。因此,您需要在gitstack/urls.py中从urlpatterns中删除'gitstack.views',

UPD-

此外,您对login模式也有问题。名称应为字符串。将url(r'^registration/login/$', login, name=login)更改为url(r'^registration/login/$', login, name='login')

最新更新