Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
你好我在更改django项目中显示未找到页面的页面时遇到问题(404)_Django_Django Templates_Django Views_Django Urls - Fatal编程技术网

你好我在更改django项目中显示未找到页面的页面时遇到问题(404)

你好我在更改django项目中显示未找到页面的页面时遇到问题(404),django,django-templates,django-views,django-urls,Django,Django Templates,Django Views,Django Urls,我一直在构建我的第一个Django项目,我正在做“登录页面”,它正在工作,但是当我做了一个条件,如果登录错误,它会返回到登录页面并显示一条错误消息,如果它是正确的,它应该转到一个写有“logadissimo”的页面,但是当我尝试最后一个时,我得到的问题如下: 找不到页面(404)请求方法:获取请求 URL:使用sitetcc.URL中定义的URLconf, Django尝试了以下URL模式,顺序如下: admin/login/login/submit login/logado空路径不匹配 任何一

我一直在构建我的第一个Django项目,我正在做“登录页面”,它正在工作,但是当我做了一个条件,如果登录错误,它会返回到登录页面并显示一条错误消息,如果它是正确的,它应该转到一个写有“logadissimo”的页面,但是当我尝试最后一个时,我得到的问题如下:

找不到页面(404)请求方法:获取请求 URL:使用sitetcc.URL中定义的URLconf, Django尝试了以下URL模式,顺序如下:

admin/login/login/submit login/logado空路径不匹配 任何一种

您看到此错误是因为在Django中有DEBUG=True 设置文件。将其更改为False,Django将显示 标准404页

这是项目中的my url.py:

“”“
基于类的视图
1.添加导入:从其他应用程序视图导入主页
2.将URL添加到urlpatterns:path(“”,Home.as_view(),name='Home'))
包括另一个URLconf
1.导入include()函数:从django.url导入include,path
2.向URL模式添加URL:path('blog/',include('blog.URL'))
"""
从django.contrib导入管理
从django.url.conf导入包括
从django.url导入路径
从核心导入视图
URL模式=[
路径('admin/',admin.site.url),
路径('login/',views.login_user),
路径('login/submit',views.submit\u login),
路径('login/logado',views.logado)
]
应用程序中的URL.py:

from . import views
from django.urls import path

app_name = 'core'

urlpatterns = [
    path('', views.login_user, name='login'),
     path('', views.submit_login, name='submit'),
      path('', views.logado, name='logado')
]
views.py文件:

from django.shortcuts import render, redirect
from django.views.decorators.csrf import csrf_protect
from django.contrib.auth import authenticate, login
from django.contrib import messages

# Create your views here.

def logado(request):
    return render(request, 'logado.html')

def login_user(request):
    return render(request,'login.html')

@csrf_protect
def submit_login(request):
    if request.POST:
        username = request.POST.get('username')
        password = request.POST.get('password')
        print(username)
        print(password)
        user = authenticate(username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect('/logado/')
        else:
            messages.error(request,'Usuário e senha inválido. Favor tentar novamente:')
    return redirect('/login/')
以及带有文件夹结构和页面“logado”的打印屏幕:


谢谢大家!

尝试
返回重定向('logado')
返回重定向('login')
语法
返回重定向('your_view_name')
这是因为您正在将一个硬编码的URL(
/logado/
)传递到
重定向(/code>),而该重定向在项目的
URL.py
中不存在,因此Django无法匹配该路由

有几种方法可以将参数传递到
重定向
,您可以看到一些示例。我强烈建议您使用url视图的
名称
,这样以后您就可以毫无问题地更改路径

此外,您还可以声明URL,这样可以保持项目的整洁,而不会使项目的
url.py
膨胀

这样,您的项目的
url.py
如下所示:

来自django.contrib导入管理
从django.url.conf导入包括
从django.url导入路径
从核心导入视图
URL模式=[
路径('admin/',admin.site.url),
路径('login/',包括('core.url'),
]
应用程序的
url.py
如下所示:

from.import视图
从django.url导入路径
应用程序名称='核心'
URL模式=[
路径(“”,views.login_user,name='login'),
路径('login/submit/',views.submit_login,name='submit'),
路径('login/logado/',views.logado,name='logado')
]
(不要忘记每条路线末尾的尾随
/


现在您可以像这样调用视图
返回重定向('core:logado')

因为您使用的是
@csrf\u protect
装饰器,您需要在html中的
{%csrf\u token%}
模板标记中添加
,如