【发布时间】:2011-04-13 08:41:37
【问题描述】:
如果我想要一个名为 app1 的 django 应用程序,它可以让用户在某人的页面和他/她自己的页面上发布注释。 如果用户已经登录,则不需要在url中使用username,但url中的username参数可以作为urlconf中的父级。
说清楚:
urls.py
urlpatterns = patterns(''
#if registered user/anonymous user visit someone's page
url(r'^/foo/users/(?P<username>\w+)/app1/',include('app1.urls', namespace='myapp1')),
#if user is logged in in his own page
url(r'^app1/', include('app1.urls', namespace='myapp1')),
...
)
app1/urls.py
urlpatterns = patterns('',
# I expect this pattern receives the username parameter from above
url(r'^note/add/$', app1_views.add_note,
name='add_note'),
url(r'^note/add/$', app1_views.add_note,
{ 'username':None}, name='add_note_own'),
...
...
)
app1/views.py
def add_note(request, username=None):
...
...
第一个问题:
现在,例如 john 已登录,并且在 jack 的笔记页面上,john 想要发布一条笔记。
我希望能够做这样的事情或接近这样的事情:
模板 app1/notes.html
{% if request.user.is_authenticated %}
{%if in his/her own note page %}
<a href="{% url add_note_own %}">add note</a> Expected generated url: www.domain.com/app1/add
{%else}
<a href="{ %url add_note %}">add note</a> Expected generated url: www.domain.com/foo/jack/app1/add
{%endif%}
{% endif %}
这可能吗?
另一件事,
如果约翰在杰克的页面上写了笔记,而 django 给出了笔记 id == 3,
为了说明这一点,只有这些 url 是有效的:
www.example.com/foo/jack/app1/3
www.example.com/foo/app1/3(如果杰克登录)
第二个问题:
我想要实现的是反向匹配可以接受捕获的参数高达
url 配置中涉及 include() 时的父 urlconf。
这个可以吗?
或者如果你明白我的意思并且可以提供更简单的解决方案,请这样做:)
抱歉,如果这篇文章令人困惑,我自己也很困惑。
非常感谢您的耐心。
我正在使用 django 1.2.5
【问题讨论】:
标签: django