0
我正在研究一個項目,該項目有一堆視圖和相應的模板和表單。每個模板包含到登錄頁面的鏈接(從主模板繼承它):將表單添加到多個頁面的最佳方法?
<ul class="options">
...
<li id="login">
<a class="button" href="{% url 'forum:login' %}?next={{ request.path }}">Sign in</a>
</li>
</ul>
並將其引導到一個單獨的登錄頁面,呈現標準的Django的登錄表單。
我想使用jQuery在單擊登錄鏈接的同一頁上創建或顯示該窗體。將表單添加到多個頁面的最佳方式是什麼?
我試圖讓HTML和動態編譯形式使用Ajax:
觀點:
class Login(FormView):
...
def get(self, request, *args, **kwargs):
if request.is_ajax():
form = self.get_form().as_ul()
return HttpResponse(form)
else:
return super(Login, self).get(request, *args, **kwargs)
腳本:
$(document).ready(function() {
$('#login').on('click', 'a', function(event) {
var loginUrl = $(this).attr('href');
$.ajax({
url: loginUrl,
type: 'GET'})
.done(function(html) {
var newForm = $('<form/>', {action: loginUrl, method: 'post'});
newForm.insertAfter('ul.options');
newForm.append($('<input/>',
{type: 'hidden', name: 'csrfmiddlewaretoken', value: csrftoken}));
var newList = $('<ul/>');
newForm.append(newList);
newList.append(html);
newList.append($('<li><input type="submit" value="Sign in"/></li>'));
});
event.preventDefault();
});
});
但我不知道,如果有沒有更好的方法來完成這樣的任務?
另外我是jQuery的新手,所以我會很感激代碼的任何評論。