Python NoReverseMatch at/login/Reverse for';教师仪表盘&x27;带参数';({';教师';:对象(2)>;},';没有找到。尝试了1个模式:
视图.pyPython NoReverseMatch at/login/Reverse for';教师仪表盘&x27;带参数';({';教师';:对象(2)>;},';没有找到。尝试了1个模式:,python,django,dictionary,routing,Python,Django,Dictionary,Routing,视图.py def Login(request): if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') user = authenticate(request , username=username , password=password) if user i
def Login(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(request , username=username , password=password)
if user is not None:
try:
is_teacher= Teacher.objects.get(profile_id=user.id)
except Teacher.DoesNotExist:
is_teacher = None
if is_teacher is not None:
login(request , user)
is_teacher= Teacher.objects.get(profile_id=user.id)
return redirect('teacher_dashboard' , {'teacher' : is_teacher})
else:
login(request , user)
return redirect('student_dashboard' )
return render (request , "pages/login.html")
path('teacher_dashboard/', views.TeacherDashboard , name='teacher_dashboard'),
path('student_dashboard/', views.StudentDashboard , name='student_dashboard'),
url.py
def Login(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(request , username=username , password=password)
if user is not None:
try:
is_teacher= Teacher.objects.get(profile_id=user.id)
except Teacher.DoesNotExist:
is_teacher = None
if is_teacher is not None:
login(request , user)
is_teacher= Teacher.objects.get(profile_id=user.id)
return redirect('teacher_dashboard' , {'teacher' : is_teacher})
else:
login(request , user)
return redirect('student_dashboard' )
return render (request , "pages/login.html")
path('teacher_dashboard/', views.TeacherDashboard , name='teacher_dashboard'),
path('student_dashboard/', views.StudentDashboard , name='student_dashboard'),
我想在URL中重新引用queryset时发送带有html页面的queryset。py路径如下:
path('teacher_dashboard/', views.TeacherDashboard , name='teacher_dashboard')
此处的“teacher_dashboard/”不期望在“/”之后出现任何内容。如果需要传递任何参数,则应使URL.py中指定的路径成为该部分
然而,这是不可能的。您需要通过URL传递的内容实际上来自浏览器,您不希望浏览器传递查询集。因此,基本上您可以做的是在URL中传递教师对象的pk,然后再次在TeachDashboard中获取该对象您的代码中有两个错误
返回重定向('teacher\u dashboard',{'teacher':is\u teacher})
path('teacher_dashboard/', views.TeacherDashboard , name='teacher_dashboard'),
你需要
return redirect('teacher_dashboard')
返回重定向('teacher\u dashboard',{'teacher':is\u teacher.id})
而url将是
path('teacher_dashboard/<int:teacher>', views.TeacherDashboard , name='teacher_dashboard')
path('teacher\u dashboard/',views.TeacherDashboard,name='teacher\u dashboard')
您的URL不接受任何参数。您需要允许URL包含您将在视图中使用的数据
urlpatterns = [
path("teacher_dashboard/<int:teacher>/", views.TeacherDashboard, name="teacher_dashboard")
在代码的另一点上,如果我看到一个名为
is_teacher
的变量,我希望看到一个bool
,因为它要么是教师,要么不是教师。因此,我建议您也将其更改为teacher=teacher.objects.get(profile_id=user.id)
,因为您正在从数据库获取一个teacher对象。使用重定向方法重定向用户,该方法现在需要一个附加到is teacher的url,例如,假设我正在重定向到页面重定向('app:home',{id:1})这将转换为localhost:8000/home/1,而不是您所期望的localhost:8000/home,因此您需要更新url.py中的路径。好的,我认为这是一个很好的解释。。。。谢谢,但markwalker我想发送一个查询集,我是说所有对象都要发送到新的视图函数。@MuhammadNaveed你不能这样做,你不能将查询集传递到URL。而你的代码并没有反映这一点。您正在执行的是获取
而不是筛选
。如果需要查询集,则必须使用传递给它的信息在视图中进行查询。因此,如果查询将使用教师
ID,然后按照我所解释的那样传递它&然后使用传入的ID创建查询集。好的,我知道了,但是我该怎么做才能从数据库中获取大量记录,并将此数据发送到重定向视图page@MuhammadNaveed您可以使用常量缓存来缓存数据键,可用于检索视图中的数据。但必须有一个更简单/更好的解决方案。然而,这超出了这个问题的范围,所以如果你不能解决这个问题,我会提出一个单独的问题。