2014-11-03 72 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的翻譯不完整,因此確保將問題正確排序。