Я работаю над веб-сайтом с 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')
Любая помощь очень ценится.