1

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

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

虽然我设法使其适应我的 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:\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

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

]

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

]
4

1 回答 1

0

urlpatterns 应该是 Pythonurl()实例列表。所以你需要从中'gitstack.views',删除urlpatternsgitstack/urls.py

UPD

你也有login模式问题。名称应该是字符串。更改url(r'^registration/login/$', login, name=login)url(r'^registration/login/$', login, name='login')

于 2017-10-13T01:37:35.610 回答