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的新手,所以我会很感激代码的任何评论。