Python Django URL.py文件的URL模式列表中发生了什么?
我有三个版本的Python Django URL.py文件的URL模式列表中发生了什么?,python,django,python-2.7,typeerror,django-urls,Python,Django,Python 2.7,Typeerror,Django Urls,我有三个版本的url.py文件 以下是导入(在版本之间共享): 第1版。这里一切正常。运行python2 manage.py运行服务器时没有问题 urlpatterns = patterns( url(r'^bio$', 'views.bio_view'), ) 第2版。嗯,我还需要一些URL。让我们添加它们。这里也没有问题 urlpatterns = patterns( '', url(r'^$', views.index, name='index'), ur
url.py
文件
以下是导入(在版本之间共享):
第1版。这里一切正常。运行python2 manage.py运行服务器时没有问题
urlpatterns = patterns(
url(r'^bio$', 'views.bio_view'),
)
第2版。嗯,我还需要一些URL。让我们添加它们。这里也没有问题
urlpatterns = patterns(
'',
url(r'^$', views.index, name='index'),
url(r'^bio$', 'views.bio_view'),
)
第3版。请稍等。。。”
在这里做什么?我其实并不需要它。我们把它移走,好吗
urlpatterns = patterns(
url(r'^$', views.index, name='index'),
url(r'^bio$', 'views.bio_view'),
)
下面是运行manage.py
服务器后出现的问题:
(一些顶级django
库调用已完成)
文件“/home/konrad/workspace/mydir/myproject/url.py”,第20行,在
url(r'^',包括('main.url'),
文件“/usr/lib/python2.7/site packages/django/conf/urls/_init__.py”,第52行,包含在include中
urlconf_模块=导入_模块(urlconf_模块)
文件“/usr/lib/python2.7/importlib/_init_uuu.py”,第37行,在导入模块中
__导入(名称)
文件“/home/konrad/workspace/mydir/myproject/url.py”,第15行,在
url(r“^bio$”、“views.bio_view”),
文件“/usr/lib/python2.7/site packages/django/conf/urls/_init__.py”,第91行,模式
t、 添加前缀(前缀)
文件“/usr/lib/python2.7/site packages/django/core/urlresolvers.py”,第232行,在add_前缀中
self.\u callback\u str=前缀+'.+self.\u callback\u str
TypeError:不支持+:“RegexURLPattern”和“unicode”的操作数类型
所以。。。实际上,问题是关于版本2。-为什么要修复版本3。错误?错误是什么
这里到底发生了什么事?我不知道你为什么感到惊讶;您删除了一个参数,结果出现了问题。(当您运行服务器时,您的第一个版本可能已经“运行”,但我怀疑您是否能够访问URL。)
您正在使用Django的旧版本。在此版本中,urlpatterns
必须使用patterns
函数的结果定义。该函数的第一个参数是应用于所有视图字符串的前缀。你的前缀是空的,但这并不意味着你可以删除它;您的第一个URL现在被用作前缀参数
在最近的版本中,人们认识到这个前缀令人困惑,很少使用。因此,模式
功能被删除,并且没有前缀;urlpatterns
的值现在必须是一个简单的列表。此外,URL中的视图必须是可调用的,而不是字符串。谢谢您的回答。因此,理论上,版本1应该引发TypeError
以防止误报-第一个前缀
参数必须是字符串
对象。你同意吗?我想这就是这里混乱的原因。可能是的。然而,由于这种语法现在已经从Django中完全删除,因此没有地方进行更改。
urlpatterns = patterns(
url(r'^$', views.index, name='index'),
url(r'^bio$', 'views.bio_view'),
)
File "/home/konrad/workspace/mydir/myproject/urls.py", line 20, in <module>
url(r'^', include('main.urls')),
File "/usr/lib/python2.7/site-packages/django/conf/urls/__init__.py", line 52, in include
urlconf_module = import_module(urlconf_module)
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/home/konrad/workspace/mydir/myproject/urls.py", line 15, in <module>
url(r'^bio$', 'views.bio_view'),
File "/usr/lib/python2.7/site-packages/django/conf/urls/__init__.py", line 91, in patterns
t.add_prefix(prefix)
File "/usr/lib/python2.7/site-packages/django/core/urlresolvers.py", line 232, in add_prefix
self._callback_str = prefix + '.' + self._callback_str
TypeError: unsupported operand type(s) for +: 'RegexURLPattern' and 'unicode'