Использование jQuery мобильных переходов страниц с перенаправлениями Django URL - PullRequest
0 голосов
/ 29 декабря 2018

Я работаю над веб-сайтом с jQuery mobile, чтобы стилизовать его и управлять переходами ajax-страниц, но я пытаюсь выполнить внешнее перенаправление со страницы входа на страницу профиля с помощью перенаправления Django в представлении.Однако URL-адрес выглядит как профиль localhost: 8000 / #, как если бы он был перенаправлением jQuery, когда я хочу, чтобы он был внешним перенаправлением URL-адреса на localhost: 8000 / profile.Я бы использовал rel = "external" или data-ajax = "false", но перенаправление происходит из формы, отправляемой в представление Django, а не из тега привязки html.

Мой HTML-код:

<html>
    <head>
        {% load staticfiles %}
        <link rel="stylesheet" href={% static 'style.css' %}>
        <script src={% static 'jquery-2.2.4.min.js' %}></script>
        <script src={% static 'jquery.mobile-1.4.5.min.js' %}></script>
        <link rel="stylesheet" href={% static "jquery.mobile-1.4.5.min.css" %}>
        <meta name="viewport" content="initial-scale=1"> 
    </head>
    <body>

        <div id='login' data-role="page">

            <div data-role="header">
                <h1 class="title">Login</h1>
                <a data-transition="slide" id="to_new_account" class='ui-btn-right' href="#create_account">create</a>
            </div>

            <div data-role="content">
                <form id="login_form" action="" method="POST">
                    {% csrf_token %} 
                    <input type="text" value="username" name="username"> <br>
                    <input type="text" value="password" name="password"> <br>
                    <input type="submit" value="login" name="login_button">
                </form>
            </div>

        </div> 

        <div id="create_account" data-role="page">

            <div data-role="header">
                <h1 class="title">new</h1>
                <a data-transition="slide" data-direction="reverse" class="button" href="#login">login</a>
            </div>

            <div data-role="content">
                <form id="create_form" action="" method="POST">
                    {% csrf_token %} 
                    <input type="text" value="username" name="username"> <br>
                    <input type="text" value="password" name="password"> <br>
                    <input type="text" value="email" name="email"> <br>
                    <input type="text" value="name" name="name"> <br>
                    <input type="text" value="age" name="age"> <br>
                    <input type="submit" value="create" name="create_button">
                </form>
            </div>

        </div>

    </body>
</html>

Мои URL-адреса Django:

from django.urls import path, re_path
from lincup_main import views

urlpatterns = [
    re_path(r'^$', views.LoginPage.as_view(), name='login'),
    re_path(r'^profile/$', views.ProfileView.as_view(), name='profile'),
]

И мои представления Django:

class LoginPage(View):
    template = 'login.html'
    profile_form = ProfileForm
    login_form = LoginForm

    def get(self, request):
        return render(request, self.template)

    def post(self, request):
        if 'login_button' in request.POST:
            login_form = self.login_form(request.POST)
            if login_form.is_valid():
                username = login_form.instance.username
                password = login_form.instance.password
                user = authenticate(username=username, password=password)
                if user is not None:
                    login(request, user)
                    return redirect('profile', permanent=True)

        elif 'create_button' in request.POST:
            profile = self.profile_form(request.POST)
            if profile.is_valid():
                #saves user to database
                profile.save()
                #creates django user from form data
                username = profile.instance.username
                password = profile.instance.password
                email = profile.instance.email
                user = User.objects.create_user(username, email, password)
                user.save()
                #add error for username taken or not valid input

        return render(request, self.template)


class ProfileView(LoginRequiredMixin, View):
    template = 'profile.html'

    def get(self, request):
        return render(request, self.template)

    def post(self, request):
        logout(request)
        return redirect('login')

def handler404(request, exception):
    return redirect('login')

Любая помощь очень ценится.

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