基于字段django的重定向特定视图
我需要根据profesor
字段登录后重定向到特定视图,如果这是错误的,则重定向到Vistaalumno
,如果是真的,请重定向到vistaprofesor 。
views.py
def profesor(user):
return (user.profesor)
@login_required
@user_passes_test(profesor)
def vistaProfesor(request):
rut= request.user.rut_user
notas = Nota.objects.select_related('id_asignatura','rut_alumno').filter(rut_profesor=rut)
observaciones = Observacion.objects.filter(rut_profesor=rut)
return render(request, 'core/vistaProfesor.html', {'notas': notas, 'observaciones': observaciones})
@login_required
def vistaAlumno(request):
if request.user.profesor == False:
rut= request.user.rut_user
notas = Nota.objects.select_related('id_asignatura').select_related('rut_profesor').filter(rut_alumno=rut)
asistencias = Asistencia.objects.filter(rut_alumno=rut)
#Necesito unir la tabla observacion con profesor, lo cual ya hace, pero luego quiero unir la tabla profesor con asignatura y mostrar el nombre en el vistaAlumno.html
observaciones = Observacion.objects.select_related('rut_profesor').filter(rut_alumno=rut)
curso = Alumno.objects.filter(rut_alumno=rut).values_list('id_curso')
horarios = Horario.objects.select_related('rut_profesor','id_asignatura','id_sala').filter(id_curso__in=curso)
return render(request, 'core/vistaAlumno.html', {'notas': notas, 'asistencias': asistencias, 'observaciones': observaciones, 'horarios': horarios})
else:
vistaProfesor(request)
models.py
class User(AbstractUser):
profesor = models.BooleanField(default=False)
rut_user = models.IntegerField(null=True)
settings.py
LOGIN_REDIRECT_URL = '/vistaAlumno'
I need to redirect after login to a specific view according to the Profesor
field, if this is False, redirect to vistaAlumno
, if True, redirect to vistaProfesor
.
views.py
def profesor(user):
return (user.profesor)
@login_required
@user_passes_test(profesor)
def vistaProfesor(request):
rut= request.user.rut_user
notas = Nota.objects.select_related('id_asignatura','rut_alumno').filter(rut_profesor=rut)
observaciones = Observacion.objects.filter(rut_profesor=rut)
return render(request, 'core/vistaProfesor.html', {'notas': notas, 'observaciones': observaciones})
@login_required
def vistaAlumno(request):
if request.user.profesor == False:
rut= request.user.rut_user
notas = Nota.objects.select_related('id_asignatura').select_related('rut_profesor').filter(rut_alumno=rut)
asistencias = Asistencia.objects.filter(rut_alumno=rut)
#Necesito unir la tabla observacion con profesor, lo cual ya hace, pero luego quiero unir la tabla profesor con asignatura y mostrar el nombre en el vistaAlumno.html
observaciones = Observacion.objects.select_related('rut_profesor').filter(rut_alumno=rut)
curso = Alumno.objects.filter(rut_alumno=rut).values_list('id_curso')
horarios = Horario.objects.select_related('rut_profesor','id_asignatura','id_sala').filter(id_curso__in=curso)
return render(request, 'core/vistaAlumno.html', {'notas': notas, 'asistencias': asistencias, 'observaciones': observaciones, 'horarios': horarios})
else:
vistaProfesor(request)
models.py
class User(AbstractUser):
profesor = models.BooleanField(default=False)
rut_user = models.IntegerField(null=True)
settings.py
LOGIN_REDIRECT_URL = '/vistaAlumno'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我将说明Django的身份验证框架用于登录网站。我希望您能够使用它来解决您的问题。
假设我们已经从我们的
forms.py
文件中收集了用户的用户名和密码:nb:nb:此表单将对数据库进行身份验证用户。
passwordInput
呈现密码
html元素。编辑
views.py
:在应用程序'
urls.py
中,我们应该在主项目目录中更新
urls.py
file 文件称为testProject
。App
App Directory:编辑
base.html
模板:在
account/login.html
中:I'm going to illustrate Django's authentication framework used to log in to a website. From here I hope you will be able to use this to solve your issue.
Assuming that we have already collected users' usernames and passwords from our
forms.py
file in the app application directory:N.B: This form will authenticate users against the database. The
PasswordInput
renders thepassword
HTML element.Edit the
views.py
:In the apps'
urls.py
We should update the
urls.py
file in the main project directory assumming our project's calledtestproject
.The
app
app directory:Edit the
base.html
template:In the
account/login.html
: