проблема django: захваченный параметр в родительском urlconf, incude () и обратное соответствие - PullRequest
1 голос
/ 13 апреля 2011

Если я хочу, чтобы приложение 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

1 Ответ

0 голосов
/ 13 апреля 2011

вам нужно передать имя пользователя, один из примеров может быть:

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 %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...