+的不受支持的操作数类型:'RegexURLPattern'和'unicode'

问题描述 投票:2回答:1

我在干净的Django (1, 6, 1, 'final', 0)上运行Python 2.7 Virtual Environment (virtualenv)。 Django似乎工作,但当我向我的urls.py文件添加一个正则表达式时,我得到一个错误,如标题中所示。我已经检查了谷歌的答案,但我能找到的只是有些相关的页面,我的问题没有答案。我是Django和Python的新手,所以我不知道是什么导致了这个错误。

堆栈跟踪显示以下内容:

./project/urls.py in <module>
    url('^', include('page.urls', namespace='page')),
./page/urls.py in <module>
    url('^dashboard/', 'page.views.back', name='back'),

这是我的urls.py文件: domain.com/project/project/urls.py

from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^', include('page.urls', namespace='page')),
    url(r'^admin/', include(admin.site.urls)),
)

domain.com/project/page/urls.py

from django.conf.urls import patterns, url

urlpatterns = patterns(
    url(r'^$', 'page.views.front', name='front'),
    url(r'^dashboard/', 'page.views.back', name='back'),
)

我已经在其他Django项目中使用了这些文件的确切内容,所以据我所知这段代码有效,但这意味着它与我为这个项目设置的虚拟环境安装有关,我不知道可能是什么问题的根源。

如果有人能够对这个问题有所了解,那将是很好的。

编辑1: 我认为不需要删除整个堆栈跟踪,因为其余部分是跟django或python本身附带的脚本的跟踪,但这里是:

 /var/www/domain.com/local/lib/python2.7/site-packages/django/core/handlers/base.py in get_response
                resolver_match = resolver.resolve(request.path_info)
/var/www/domain.com/local/lib/python2.7/site-packages/django/core/urlresolvers.py in resolve
            for pattern in self.url_patterns:
/var/www/domain.com/local/lib/python2.7/site-packages/django/core/urlresolvers.py in url_patterns
        patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
/var/www/domain.com/local/lib/python2.7/site-packages/django/core/urlresolvers.py in urlconf_module
            self._urlconf_module = import_module(self.urlconf_name)
/var/www/domain.com/local/lib/python2.7/site-packages/django/utils/importlib.py in import_module
        __import__(name)
./project/urls.py in <module>
    url(r'^', include('page.urls', namespace='page')),
/var/www/domain.com/local/lib/python2.7/site-packages/django/conf/urls/__init__.py in include
        urlconf_module = import_module(urlconf_module)
/var/www/domain.com/local/lib/python2.7/site-packages/django/utils/importlib.py in import_module
        __import__(name)
./page/urls.py in <module>
    url(r'^dashboard/', 'page.views.back', name='back'),
/var/www/domain.com/local/lib/python2.7/site-packages/django/conf/urls/__init__.py in patterns
            t.add_prefix(prefix)
/var/www/domain.com/local/lib/python2.7/site-packages/django/core/urlresolvers.py in add_prefix
        self._callback_str = prefix + '.' + self._callback_str
python regex django unicode virtualenv
1个回答
5
投票

您需要为字符串前缀patterns()提供第一个参数。你没有,你的第一个参数是url()结果:

urlpatterns = patterns(
    url(r'^$', 'page.views.front', name='front'),
    url(r'^dashboard/', 'page.views.back', name='back'),
)

添加一个view prefix

urlpatterns = patterns('',
    url(r'^$', 'page.views.front', name='front'),
    url(r'^dashboard/', 'page.views.back', name='back'),
)

或者,因为您的所有网址都来自同一个模块:

urlpatterns = patterns('page.views',
    url(r'^$', 'front', name='front'),
    url(r'^dashboard/', 'back', name='back'),
)
© www.soinside.com 2019 - 2024. All rights reserved.