Django 登录\注册重定向
我为用户创建了登录\注册表单。我的问题是登录时出现错误: 找不到页面(404)请求方法:获取请求 网址: 如果登录成功,它应该将我重定向到“home.html”。若我登录时出现上述错误,若我点击浏览器中的“后退”按钮,我将被重定向到我的“Home.html”,并成功登录。 我的另一个问题是,当我登录时,我被重定向到DJANGO默认的注销页面,而不是我的“logged_out.html” Views.pyDjango 登录\注册重定向,django,django-models,django-forms,django-templates,django-views,Django,Django Models,Django Forms,Django Templates,Django Views,我为用户创建了登录\注册表单。我的问题是登录时出现错误: 找不到页面(404)请求方法:获取请求 网址: 如果登录成功,它应该将我重定向到“home.html”。若我登录时出现上述错误,若我点击浏览器中的“后退”按钮,我将被重定向到我的“Home.html”,并成功登录。 我的另一个问题是,当我登录时,我被重定向到DJANGO默认的注销页面,而不是我的“logged_out.html” Views.py @login_required def home(request): return
@login_required
def home(request):
return render(request, 'home.html')
def signup(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
raw_password = form.cleaned_data.get('password1')
user = authenticate(username=username, password=raw_password)
login(request, user)
return redirect('home')
else:
form = UserCreationForm()
return render(request, 'signup.html', {'form': form})
url.py
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^$', views.home, name='home'),
url(r'^login/$', auth_views.LoginView.as_view(), {'template_name': 'login.html'}, name='login'),
url(r'^logout/$', auth_views.LogoutView.as_view(), {'next_page': 'login'}, name='logout'),
url(r'^signup/$', views.signup, name='signup'),
]
login.html
{% extends 'base.html' %}
{% block content %}
<h2>Log in to My Site</h2>
{% if form.errors %}
<p style="color: red">Your username and password didn't match. Please try again.</p>
{% endif %}
<form method="post">
{% csrf_token %}
<input type="hidden" name="next" value="{{ next }}" />
{% for field in form %}
<p>
{{ field.label_tag }}<br>
{{ field }}<br>
{% for error in field.errors %}
<p style="color: red">{{ error }}</p>
{% endfor %}
{% if field.help_text %}
<p><small style="color: grey">{{ field.help_text }}</small></p>
{% endif %}
</p>
{% endfor %}
<button type="submit">Log in</button>
<a href="{% url 'signup' %}">New to My Site? Sign up</a>
</form>
{% endblock %}
{%extends'base.html%}
{%block content%}
登录到我的网站
{%if form.errors%}
您的用户名和密码不匹配。请再试一次
{%endif%}
{%csrf_令牌%}
{%形式的字段为%}
{{field.label_tag}}
{{field}}
{%字段中有错误。错误%}
{{error}
{%endfor%}
{%if field.help_text%}
{{field.help_text}
{%endif%}
{%endfor%}
登录
{%endblock%}
logged_out.html
{% extends 'base.html' %}
{% block content %}
<h2>Why are You leaving :(</h2>
{% endblock %}
{%extends'base.html%}
{%block content%}
你为什么要离开:(
{%endblock%}
base.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>{% block title %}Simple is Better Than Complex{% endblock %}</title>
</head>
<body>
<header>
<h1>My Site</h1>
{% if user.is_authenticated %}
<a href="{% url 'logout' %}">logout</a>
{% else %}
<a href="{% url 'login' %}">login</a> / <a href="{% url 'signup' %}">signup</a>
{% endif %}
<hr>
</header>
<main>
{% block content %}
{% endblock %}
</main>
</body>
</html>
{%block title%}简单优于复杂{%endblock%}
我的网站
{%if user.u经过身份验证%}
{%else%}
/
{%endif%}
{%block content%}
{%endblock%}
home.html
{% extends 'base.html' %}
{% block content %}
<h2>Welcome, {{ user.username }}!</h2>
{% if request.user.is_staff %}
<a href="{% url 'admin:index' %}">link to admin panel</a>
<!--<a href="{% url 'signup' %}">Admin</a>-->
{% endif %}
{% endblock %}
{%extends'base.html%}
{%block content%}
欢迎,{{user.username}}!
{%if request.user.is_staff%}
{%endif%}
{%endblock%}
您需要将其放入settings.py
文件中,因为您使用的是django的内置登录名
系统,django
总是查找url'profile'
你需要把它放在你的
settings.py
文件中,因为你使用的是django的内置登录系统,django
总是寻找一个url'profile'谢谢,登录重定向\u url='home'是我所需要的,我是否需要像登录时那样用logout\u url='logout'在url.py和creatin中修复注销g查看“注销”?您可以这样做,或者您可以将其保留为Django的,或者您也可以在设置中查找注销URL或类似的内容谢谢,登录重定向URL='home'是我所需要的,我是否需要像在URL.py中使用logout\u URL='logout'登录时那样,通过创建视图“logout”来修复注销?您可以这样做,或者您可以将其保留为Django的,或者您也可以在设置中查找注销URL或类似的内容。您应该在登录和注销活动后编写重定向代码。没有类似于页面的配置文件,因此它显示404:-页面未找到错误。您应该在登录和注销活动后编写重定向代码。没有page喜欢配置文件,所以它向您显示404:-页面未找到错误。
LOGIN_REDIRECT_URL = '/'