首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >登录\注册重定向

登录\注册重定向
EN

Stack Overflow用户
提问于 2019-05-27 07:46:42
回答 1查看 319关注 0票数 0

我为用户创建了登录\注册表单。我的问题是,当我登录时,我会收到一个错误:

未找到页面(404)请求方法:获取请求URL:http://127.0.0.1:8000/accounts/profile/

如果登录成功,它应该将我重定向到"home.html“。如果我登录到上面的一个错误,如果我点击浏览器中的“后退”按钮,我将被重定向到我的"Home.html“上,并且我成功地登录了。我的另一个问题是,当我退出时,我被重定向到DJANGO默认注销页面,而不是我的"logged_out.html“。

Views.py

代码语言:javascript
复制
@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})

Urls.py

代码语言:javascript
复制
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

代码语言:javascript
复制
{% 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 %}

logged_out.html

代码语言:javascript
复制
{% extends 'base.html' %}

{% block content %}
  <h2>Why are You leaving :(</h2>
{% endblock %}

base.html

代码语言:javascript
复制
<!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>

home.html

代码语言:javascript
复制
{% 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 %}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-27 07:49:20

代码语言:javascript
复制
LOGIN_REDIRECT_URL = '/'

当您使用settings.py系统时,您需要将其放入您的django's inbuilt login文件中,Django总是查找url 'profile'

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56321784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档