django问题:在父urlconf、incude()和反向匹配中捕获参数

django问题:在父urlconf、incude()和反向匹配中捕获参数,django,Django,如果我想让django应用程序名为app1,它可以让用户在某人的页面和他/她自己的页面上发布便条。 如果用户已登录,则无需在url中使用用户名,但url中的用户名参数可以作为urlconf中的父项 要说清楚: url.py app1/views.py 第一个问题: 例如,现在john已登录,并且在jack的备注页上,john希望发布一条备注。 我希望能够做这样或接近这样的事情: 模板app1/notes.html {%if request.user.is_authenticated%} {%if

如果我想让django应用程序名为app1,它可以让用户在某人的页面和他/她自己的页面上发布便条。 如果用户已登录,则无需在url中使用用户名,但url中的用户名参数可以作为urlconf中的父项

要说清楚:
url.py

app1/views.py

第一个问题:
例如,现在john已登录,并且在jack的备注页上,john希望发布一条备注。
我希望能够做这样或接近这样的事情:

模板app1/notes.html

{%if request.user.is_authenticated%}
{%if在他/她自己的便笺页%}
预期生成的url:www.domain.com/app1/add
{%else}
预期生成的url:www.domain.com/foo/jack/app1/add
{%endif%}
{%endif%}
这可能吗

还有一件事,
如果john在jack的页面上写了便条,django给出了便条id==3,
因此,为了说明这一点,只有这些URL是有效的:
www.example.com/foo/jack/app1/3
www.example.com/foo/app1/3(如果jack登录)

第二个问题:
我想要实现的是反向匹配可以接受捕获的参数,直到 url配置中涉及include()时的父url配置。 这能做到吗

或者,如果您明白我的意思,并且可以提供更简单的解决方案,请这样做:)
对不起,如果这篇文章让人困惑,我自己也很困惑。 非常感谢你的耐心


我使用的是django 1.2.5

您需要传递一个用户名,例如:

urlpatterns = patterns('',
    # I expect this pattern receives the username parameter from above 
    url(r'^note/add/(?P<username>[^/]+)/$', app1_views.add_note, name='add_note'),

    # username is an optional argument, so no need to pass it
    url(r'^note/add/$', app1_views.add_note, name='add_note_own'),
)  
urlpatterns=patterns(“”,
#我希望这个模式从上面接收username参数
url(r'^note/add/(?P[^/]+)/$),app1_views.add_note,name='add_note'),
#username是一个可选参数,因此无需传递它
url(r“^note/add/$”,app1\u views.add\u note,name='add\u note\u own'),
)  
然后在模板中:

{% if request.user.is_authenticated %}
    {% if page.owner == request.user %}
      <a href="{% url add_note_own %}">add note</a>
    {% else %}
       <a href="{% url add_note request.user.username %}">add note to {{ request.user.username }}</a>
    {% endif %}
{% endif %}
{%if request.user.is_authenticated%}
{%if page.owner==request.user%}
{%else%}
{%endif%}
{%endif%}
def add_note(request, username=None):
    ...
    ...
{% 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 %}
urlpatterns = patterns('',
    # I expect this pattern receives the username parameter from above 
    url(r'^note/add/(?P<username>[^/]+)/$', app1_views.add_note, name='add_note'),

    # username is an optional argument, so no need to pass it
    url(r'^note/add/$', app1_views.add_note, name='add_note_own'),
)  
{% if request.user.is_authenticated %}
    {% if page.owner == request.user %}
      <a href="{% url add_note_own %}">add note</a>
    {% else %}
       <a href="{% url add_note request.user.username %}">add note to {{ request.user.username }}</a>
    {% endif %}
{% endif %}