Я согласен, это почти непостижимо, но я собираюсь дать ему попытку с точки зрения ответа.
С точки зрения последовательности вызова их нет. Пользователь может сначала посетить 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 .