django 1.10应用程序级别URL无法识别位置参数

时间:2017-04-13 15:53:13

标签: python django

我正在尝试在我的django应用程序的一个应用程序内的视图上使用位置参数。

该应用程序称为成员。并且项目trekfed调用了member / urls.py:

trekfed.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

构件\ urls.py

from member import urls as mviews
from public import views as pviews

urlpatterns = [

    url(r'^member/', include(mviews)),
    url(r'^admin/', admin.site.urls),

views.py

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。

这里有什么我想念的吗?感谢。

更新1

尝试:

http://localhost:8000/member/user2/

url(r'^(?P<mbr>[a-zA-Z0-9]+)/$', views.index, name='profile'),

没有变化。

1 个答案:

答案 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/

中测试正则表达式模式