Django:配置错误的url:括号不匹配
我正在我的Mac上开发一个网站,使用的是虚拟机(VM),然后把它部署到一个远程的UAT服务器上。这个虚拟机的操作系统和软件环境和UAT服务器以及正式服务器是一样的。当我尝试访问我网站的UAT版本时,出现了以下错误:
"^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'),
那么错误就会转到下一行。我这里做的只是给pk参数的\d
加上了方括号。为什么这么简单的变化会导致错误?而且为什么这个问题只在我的UAT环境中出现,而在本地开发时却没有?
1 个回答
0
丹尼尔的问题让我找到了正确的方向。我的PO文件中的问题网址翻译不完整,所以确保这个翻译正确后,我的问题就解决了。