0
我发展我的Mac网站伊娜VM然后把它部署到远程服务器UAT。虚拟机使用与UAT和实时服务器相同的操作系统和软件堆栈进行设置。我得到试图访问我的网站的UAT版本时出现以下错误:Django的:配置不当网址:不平衡括号
"^accounts/update-user-group/(?P<pk>\d" is not a valid regular expression: unbalanced parenthesis
在第一次看似乎很明显出了什么问题:给定的URL模式是不完整的。但是,我的urls.py文件有正确的完整url:
# -*- coding: utf-8 -*-
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from django.conf.urls import patterns, url
from views import UserGroupList, UserGroupDetail
from views import UserGroupCreate, UserGroupUpdate, UserGroupDelete
from views import UserDeletedGroups, RecoverDeletedGroup
urlpatterns = patterns('',
url(_(r'^accounts/create-user-group/$'), UserGroupCreate.as_view(), name='user_group_create'),
url(_(r'^accounts/update-user-group/(?P<pk>\d+)/$'), UserGroupUpdate.as_view(), name='user_group_update'),
url(_(r'^delete/(?P<pk>\d+)/$'), UserGroupDelete.as_view(), name='user_group_delete'),
url(_(r'^accounts/user-group-deleted/$'), UserDeletedGroups.as_view(), name='user_group_deleted_list'),
url(_(r'^recover/(?P<pk>\d+)/$'), RecoverDeletedGroup.as_view(), name='user_group_recover_deleted'),
url(_(r'^accounts/user-group-details/(?P<pk>\d+)/$'), UserGroupDetail.as_view(), name='user_group_detail'),
url(_(r'^accounts/user-group-list/$'), UserGroupList.as_view(), name='user_group_list'),
)
所以这个错误似乎是由urlpatterns中的第二个正则表达式产生的。但是,如果我将正则表达式更改为:
url(_(r'^accounts/update-user-group/(?P<pk>[\d]+)/$'), UserGroupUpdate.as_view(), name='user_group_update'),
然后错误继续到下一行。我在这里所做的是在\d
的pk参数中加上方括号。这种简单的差异如何成为错误的原因?为什么它只会发生在我的UAT环境中,而不是本地开发?
为什么你ugettext包裹你的正则表达式的字符串? – 2014-11-03 09:58:53
由于其国际站点和可翻译的URL是其中的一个要求。我们已经这样做了一年,并且之前一直没有造成任何问题 – hellsgate 2014-11-03 10:05:09
事实证明,这并未造成问题,原因是我们没有在我们的PO文件中为该URL进行翻译。现在我们做了,它不完整。谢谢丹尼尔,你的问题指出我在正确的方向 – hellsgate 2014-11-03 10:44:52