Как показать сообщения Django без перезагрузки страницы? - PullRequest
0 голосов
/ 13 апреля 2019

я создавал всплывающую форму регистрации.и не хочу перезагружать страницу, когда появляется какое-либо сообщение об ошибке или об успешном завершении.потому что тогда всплывающая форма закроется.я просто хочу показать сообщение просто без перезагрузки страницы.

это то, что я делаю до сих пор

views.py

def signup(request):

if request.method == "POST":

    username = request.POST["username"]
    email =  request.POST["email"].lower()
    password = request.POST["password"]
    password2 = request.POST["password2"]

    try:
        if password2 != password:
            messages.error(request, "password didn't match")
        elif len(password) < 6:
            messages.error(request, "password is too small.")
        elif User.objects.get(email=email):
            messages.error(request, "user with this email already exists")
    except:
        if not (User.objects.filter(username=username).exists()):
            user = User.objects.create_user(username=username, email=email)
            user.set_password(password)
            user.save()
            messages.success(request, "User Created")
        else:
            messages.error(request, "Looks like username already exists")

    django_messages = []

    for message in messages.get_messages(request):
        django_messages.append({
            "level": message.level,
            "message": message.message,
            "tags": message.tags, 
            })

    data = {}
    data['messages'] = django_messages

    return HttpResponse(json.dumps(data), content_type="application/json")
return redirect(request.META['HTTP_REFERER'])

ajax-код

<script type="text/javascript">
$(document).on('submit','#signup_form',function(e){
    e.preventDefault();

    $.ajax({
        type:'POST',
        url:"{% url 'auth_signup' %}",
        data:{

            'username':$('#signup_username').val()
            'email':$('#signup_email').val(),
            'password':$('#signup_password').val(),
            'password2':$('#signup_password2').val(),
            'csrfmiddlewaretoken' : $("input[name=csrfmiddlewaretoken]").val()
        },
        success:function(data){
            update_messages(data.messages);;
            $(".message").show();

        },

        error:function(data){
            update_messages(data.messages);
            (".message").show();


        }
    });
}); 

<script type="text/javascript">
function update_messages(messages){
$("#msgs").html("");
$.each(messages, function (i, m) {
            $("#msgs").append("<div class='alert "+m.tags+"''><button type='button' class='close' data-dismiss='alert' aria-label='Close'><span aria-hidden='true'>&times;</span></button>"+m.message+"</div>");});}</script>

когда я нажимаю кнопку отправки.там должно быть сообщение об ошибке или об успешном завершении.но страница перейдет на URL http://127.0.0.1:8000/signup и покажет только эту строку json.

{"messages": [{"level": 40, "message": "пароль не совпадает", "теги ":" alert-danger "}]}

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