путаница в URL и шаблон в Джанго - PullRequest
0 голосов
/ 29 ноября 2010

Мой URL:

1. http://localhost:8000/docs/[slug]
2. http://localhost:8000/docs/[slug]/login

1. URL звонки до номера 2. url Я хочу отправить значение slug для функции, отображаемой в шаблоне url 2. In что я должен написать для события действия формы.

1 Ответ

1 голос
/ 15 декабря 2010

Я согласен, это почти непостижимо, но я собираюсь дать ему попытку с точки зрения ответа.

С точки зрения последовательности вызова их нет. Пользователь может сначала посетить url 2 или url 1. У вас нет способа гарантировать, что они попытаются получить доступ первыми, потому что они могут напрямую ввести URL в свой браузер. Единственное, что вы можете сделать, это установить переменную в request.session dict и протестировать ее с помощью login url.

С точки зрения передачи slug на другой URL, если у вас есть URL с этим в нем:

urls = ('',
url(r'docs/(?P<slug>\w+)', 'app.views.slug', name='slug-view'),
url(r'docs/(?P<slug>\w+)/login', 'app.views.slug_login', name='slug-login'),
#..
)

Тогда в вашем шаблоне вы можете сделать это:

<form action="{% url slug-login slugname %}" method="POST">

Ваш views.py будет выглядеть примерно так.

def slug(request, slug):
    #
    #

    return render_to_response('templatename.html', {'slugname':slug}, context_instance=RequestContext(request))

def slug_login(request, slug):
    # do something with slug.

Таким образом, когда вы получаете доступ к представлению slug, вы передаете в шаблон переменную с именем slugname, которую шаблон использует с библиотекой URL django для разрешения URL-адреса с определенным именем в urls.py с одним именованным параметром, slug, который он назначит значение slugname.

Предлагаю попробовать.

Я также могу рекомендовать вам прочитать о django url dispatcher . Использование вами регулярных выражений без именованных параметров является приемлемым, но на самом деле не является наилучшей практикой. Я бы также предложил ярлыки django (render_to_response) в качестве быстрого способа передачи переменных в шаблоны и сам язык шаблонов django .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...