Если я хочу, чтобы приложение django называлось app1, которое может делать заметки пользователя на чьей-то странице и на его / ее собственной странице.И если пользователь вошел в систему, нет необходимости использовать имя пользователя в URL, но параметр имени пользователя в URL может выступать в качестве родителя в 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):
...
...
Первый вопрос :
Теперь, например, Джон вошел в систему и на странице заметок Джека Джон хочет опубликовать заметку.
Я хочу иметь возможность сделать что-то подобное или около тогоэто:
шаблон 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 %}
Возможно ли это?
Другое дело,
, если Джон написал заметку вна странице jack, а django дает идентификатор заметки == 3,
, поэтому для отображения этой заметки допустимы только эти URL:
www.example.com/foo/jack/app1/3
www.example.com / foo / app1 / 3 (если jack вошел в систему)
Второй вопрос:
что я хочу добиться, так это обратное совпадение, может принять захваченный параметр вплоть до родительского urlconfкогда включить () является вовлечьбуду в конфигурации URL.Можно ли это сделать?
Или, если вы понимаете, о чем я, и можете предложить более простое решение, пожалуйста, сделайте так:)
Извините, если этот пост сбивает с толку, я запутался.Большое спасибо за терпение.
Я использую django 1.2.5