django问题:在父urlconf、incude()和反向匹配中捕获参数
如果我想让django应用程序名为app1,它可以让用户在某人的页面和他/她自己的页面上发布便条。 如果用户已登录,则无需在url中使用用户名,但url中的用户名参数可以作为urlconf中的父项 要说清楚: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
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 %}