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