你好我在更改django项目中显示未找到页面的页面时遇到问题(404)
我一直在构建我的第一个Django项目,我正在做“登录页面”,它正在工作,但是当我做了一个条件,如果登录错误,它会返回到登录页面并显示一条错误消息,如果它是正确的,它应该转到一个写有“logadissimo”的页面,但是当我尝试最后一个时,我得到的问题如下: 找不到页面(404)请求方法:获取请求 URL:使用sitetcc.URL中定义的URLconf, Django尝试了以下URL模式,顺序如下: admin/login/login/submit login/logado空路径不匹配 任何一种 您看到此错误是因为在Django中有DEBUG=True 设置文件。将其更改为False,Django将显示 标准404页 这是项目中的my url.py:你好我在更改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空路径不匹配 任何一
“”“
基于类的视图
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%}
模板标记中添加
,如