Я пишу веб-приложение на django и использую jquery-ui для пользовательского интерфейса. Я использую django-регистрацию, чтобы позаботиться о регистрации пользователя.
По сути, то, что я пытаюсь сделать, это вместо того, чтобы иметь отдельную страницу входа, я хочу, чтобы страница входа была модальным диалогом, чтобы вы нажимали на ссылку, а если вам нужно войти, всплывающее окно появляется, и вы можете войти оттуда. В этой части я использую модальную форму jquery-ui и в основном просто отображаю форму входа, которая обычно скрыта.
Однако я могу заставить его работать, только если URL-адрес страницы выглядит следующим образом:
url(r'^$',
auth_views.login,
{'template_name': 'index.html'}),
Поскольку я хочу, чтобы модальное окно входа в систему появлялось всякий раз, когда пользователь хочет сделать что-то, требующее входа в систему, оно понадобится мне на нескольких страницах. Но я не хочу, чтобы все URL выглядели так, как указано выше.
Я увидел еще один вопрос на сайте, который решает эту проблему: Аутентификация Django и Ajax - URL-адреса, требующие входа в систему
но я не до конца понимаю ответ. Я все еще довольно плохо знаком с Django и javascript, поэтому мне было интересно, может кто-нибудь дать немного больше советов?
Вот часть в "index.html" для формы:
<div id="dialog-form" title="LOGIN">
<form method="post" action="?next={{ next|default:"/" }}">
{% csrf_token %}
<dl>
<dt><label for="id_username">Username:</label>{% if form.username.errors %} <span class="error">{{ form.username.errors|join:", " }}</span>{% endif %}</dt>
<dd>{{ form.username }}</dd>
<dt><label for="id_password">Password:</label>{% if form.password.errors %} <span class="error">{{ form.password.errors|join:", " }}</span>{% endif %}</dt>
<dd>{{ form.password }}</dd>
<dt><input type="submit" value="Log in" /></dt>
</dl>
</form>
</div>
<button id="login">LOGIN</button>
А вот и JavaScript:
<script>
$(function() {
$( "#dialog-form" ).dialog({
autoOpen: false,
height: 500,
width: 550,
modal: true,
buttons: {
Close: function() {
$( this ).dialog( "close" );
}
},
close: function() {
allFields.val( "" ).removeClass( "ui-state-error" );
}
});
$( "#login" ).click(function() {
$( "#dialog-form" ).dialog( "open" );
});
});
</script>
Заранее благодарю за помощь.