Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django URL.py文件的URL模式列表中发生了什么?_Python_Django_Python 2.7_Typeerror_Django Urls - Fatal编程技术网

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'