【问题标题】:Django not redirecting to the right pageDjango没有重定向到正确的页面
【发布时间】:2020-08-28 18:21:42
【问题描述】:

我得到了什么: (从登录页面重定向)

Using the URLconf defined in webapp.urls, Django tried these URL patterns, in this order:

admin/
[name='blog-home']
about/ [name='blog-about']
register/ [name='register']
login/ [name='login']
logout/ [name='logout']
The current path, login/{ url 'register' }, didn't match any of these.

我想重定向到注册/页面,但是 django 转到登录/注册。

我的主要项目网址:

from django.contrib import admin
from django.contrib.auth import views as auth_views
from django.urls import path, include
from users import views as user_views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls')),
    path('register/', user_views.register, name='register'),
    path('login/', auth_views.LoginView.as_view(template_name='users/login.html'), name='login'),
    path('logout/', auth_views.LogoutView.as_view(template_name='users/logout.html'), name='logout'),


]

(Pycharm在这个文件中找不到users模块,但是django没有报错,完全没问题)

我的主要项目安装了应用程序:

INSTALLED_APPS = [
    'blog.apps.BlogConfig',
    'users.apps.UsersConfig',
    'crispy_forms',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

我在主项目 settings.py 中添加的内容:

CRISPY_TEMPLATE_PACK = 'bootstrap4'

LOGIN_REDIRECT_URL = 'blog-home'

LOGIN_URL = 'login'

用户意见.py:

from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm
from django.contrib import messages
from .forms import UserRegisterForm


def register(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            messages.success(request, f'Account created for {username}!')
            return redirect('blog-home')
    else:
        form = UserRegisterForm()
    return render(request, 'users/register.html', {'form': form})

谢谢!

【问题讨论】:

    标签: python django pycharm


    【解决方案1】:

    这可能是您的login.html 模板的问题。你可能有一个这样的链接:

    <a href="{ url 'register' }">Register</a>`
    

    除非您更改 Django 的默认模板运算符,否则您应该使用 {% 作为 url 模板标签:

    <a href="{% url 'register' %}">Register</a>`
    

    阅读 Django 的模板页面可能是个好主意:https://docs.djangoproject.com/en/3.1/topics/templates/

    这里是 url 标签的特定文档: https://docs.djangoproject.com/en/3.1/ref/templates/builtins/#url

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-24
      • 2013-07-08
      • 2020-10-10
      • 2013-02-08
      • 2012-10-29
      相关资源
      最近更新 更多