【问题标题】:Django URL syntax errorDjango URL 语法错误
【发布时间】:2011-08-05 00:54:43
【问题描述】:

我正在创建一个 wiki 应用程序。当我在 urls.py 中为我的应用程序创建 url 时,我收到语法错误消息。我不擅长正则表达式。

这是我的代码,

(r'wikicamp/(?<page_name>[^/]+)/edit/$', 'wikicamp.wiki.views.edit_page'),
(r'wikicamp/(?<page_name>[^/]+)/save/$', 'wikicamp.wiki.views.save_page'),
(r'wikicamp/(?<page_name>[^/]+)/$', 'wikicamp.wiki.views.view_page'),

我的错误是,

error at /
syntax error
Request Method: GET
Request URL:    http://127.0.0.1:8000/
Django Version: 1.2.5
Exception Type: error
Exception Value:    
syntax error
Exception Location: /usr/lib/python2.6/re.py in _compile, line 245
Python Executable:  /usr/bin/python
Python Version: 2.6.6
Python Path:    ['/home/ztron/wikicamp', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/local/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/python2.6/dist-packages/gst-0.10', '/usr/lib/pymodules/python2.6', '/usr/lib/python2.6/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.6/gtk-2.0']
Server time:    Wed, 13 Apr 2011 15:21:18 -0500

正则表达式有什么问题吗?我确实阅读了 django 文档,但仍然不知道。

谢谢!

【问题讨论】:

    标签: python regex django django-urls


    【解决方案1】:

    您命名的捕获组缺少“P”。这样做:

    (r'wikicamp/(?P<page_name>[^/]+)/edit/$', 'wikicamp.wiki.views.edit_page'),
    (r'wikicamp/(?P<page_name>[^/]+)/save/$', 'wikicamp.wiki.views.save_page'),
    (r'wikicamp/(?P<page_name>[^/]+)/$', 'wikicamp.wiki.views.view_page'),
    

    【讨论】:

    • 我记得 P 是一个 python 特定的语法位,表示这是“python 命名组”。
    • @Soviut:您也可以将此语法与 PHP 一起使用(以及任何其他使用出色的 PCRE 库的工具)。
    【解决方案2】:

    根据http://docs.python.org/library/re.html,命名组的语法是

    (?P<name>...)
    

    这意味着你应该有

    (r'wikicamp/(?P<page_name>[^/]+)/edit/$', 'wikicamp.wiki.views.edit_page'),
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 2021-06-25
      • 2011-07-30
      • 2011-04-30
      • 1970-01-01
      相关资源
      最近更新 更多