我正在尝试在我的django应用程序的一个应用程序内的视图上使用位置参数。
该应用程序称为成员。并且项目trekfed调用了member / urls.py:
b = np.array([0,0,0,0,1,1,1,1,0,0,0,0,1,1,0,0])
b[np.concatenate(([True], np.diff(b) != 0))]
# array([0, 1, 0, 1, 0])
np.count_nonzero(b[np.concatenate(([True], np.diff(b) != 0))])
# 2
from member import urls as mviews
from public import views as pviews
urlpatterns = [
url(r'^member/', include(mviews)),
url(r'^admin/', admin.site.urls),
urlpatterns = [
url(r'$', views.index, name='myprofile'),
url(r'^(?P<mbr>)/$', views.index, name='profile'),
url(r'^api/', include(router.urls)),
]
经过身份验证后,如果我转到@login_required
def index(request, mbr=""):
print(mbr)
data = {}
if mbr:
user = User.objects.filter(Q(id=mbr)|Q(username=mbr)).values('User_id')
else:
user = request.user
data['user'] = user
data['member'] = models.Member.objects.get(User=user)
data['Address'] = models.Address.objects.filter(User=user).get(Primary=True)
data['Phone'] = models.Phone.objects.filter(User=user).get(Primary=True)
data['Family'] = models.Family.objects.filter(Primary=user.member)
data['Sponsor'] = models.Family.objects.filter(Dependent=user.member.pk)
data['rank'] = models.Promotion.objects.filter(User=user).latest('Date_Effective')
return render(request, "member/profile/page_user_profile.html", data)
我可以看到我的个人资料。没问题。
如果我转到http://localhost:8000/member/
,我仍会看到我的个人资料,而不是用户2。
这里有什么我想念的吗?感谢。
尝试:
http://localhost:8000/member/user2/
和
url(r'^(?P<mbr>[a-zA-Z0-9]+)/$', views.index, name='profile'),
没有变化。
答案 0 :(得分:3)
是的,您在此处遗漏了一些内容,并将其称为regex pattern
。
在urls
中,url(r'^(?P<mbr>)/$'),
模式与任何内容都不匹配(它只是一个空字符串,''
)。您应首先考虑要捕获的模式(仅说明单词,仅数字,单词和数字,单词和数字以及-
,单词和数字以及-
和{{1}等等。
这一切都取决于捕获的模式。请查看here了解一些常见的网址格式以及您选择的内容,将其放在_
字符(>
)之后。
如果你想让它成为一个可选字段,那么你仍然需要输入正则表达式模式(如果匹配的话)并按原样保留url(r'^(?P<mbr>regex_pattern_here)/$'),
:
urls
使用这种方法,urlpatterns = [
url(r'^$', views.index, name='myprofile'),
url(r'^(?P<mbr>regex_pattern_here)/$', views.index, name='profile'),
url(r'^api/', include(router.urls)),
]
(不包含http://localhost:8000/member/
)和mbr
(包含http://localhost:8000/member/user2/
)都会点击mbr = user2
视图。
[BONUS]:您可以在http://pythex.org/
中测试正则表达式模式