2014-11-03 69 views
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环境中,而不是本地开发?

+3

为什么你ugettext包裹你的正则表达式的字符串? – 2014-11-03 09:58:53

+0

由于其国际站点和可翻译的URL是其中的一个要求。我们已经这样做了一年,并且之前一直没有造成任何问题 – hellsgate 2014-11-03 10:05:09

+0

事实证明,这并未造成问题,原因是我们没有在我们的PO文件中为该URL进行翻译。现在我们做了,它不完整。谢谢丹尼尔,你的问题指出我在正确的方向 – hellsgate 2014-11-03 10:44:52

回答

0

丹尼尔斯问题指出了我在这个正确的方向。我的PO文件中问题URL的翻译不完整,因此确保将问题正确排序。