Перенаправление на другую страницу для выполнения скрипта в django
У меня проблема, я делаю веб для выполнения заданий агента SqlServer, и у меня есть типы заданий, с параметрами или без параметров (я добавил этот атрибут в мою таблицу с булевым значением), так вот если у моего задания нет параметров, оно выполняется нормально, но если у моего задания есть параметры, оно перенаправляет на другую страницу, где я могу ввести значение параметров и затем выполнить задание. Я получил мой код byt он возвращает ошибку "не вернул Http.Response", может кто-нибудь может сказать мне, что я делаю неправильно? Я оставлю некоторый код ниже
views.py
#Job execution
def ejecutar(request, job_name):
print("Ejecutando el job")
cursor = connection.cursor()
job = Jobs.objects.get(job_name=job_name)
if job.flag_params == 0:
cursor.execute("EXEC msdb.dbo.sp_start_job '" + job.job_name + "'")
return HttpResponse("""<html><script>alert("Job ejecutado");window.location.replace('/home');</script></html>""")
else:
#redirects to parameters.html
redirect('parameters.html', job_name=job.job_name)
if request.method == 'POST':
#get job parameters
parameters = Parametros.objects.filter(job_id=job.id)
for parameter in parameters:
#update parameters value
cursor.execute("UPDATE Jobs_parametros SET parameter_value='" + request.POST['parameter'] + "' WHERE parameter_name='" + parameter.parameter_name + "' AND job_id='" + str(job.id) + "'")
cursor.execute("EXEC msdb.dbo.sp_start_job '" + job.job_name + "'")
render('parameters.html', {'parameters': parameters})
return HttpResponse("""<html><script>alert("Job ejecutado");window.location.replace('/home');</script></html>""")
#Get Job List per User
def insertar(request):
#get user id who logged in
user = Usuarios.objects.get(username=request.session['username'])
#get jobs asigned to the user
jobs = DetailJobUser.objects.filter(user_id=user.id)
return render(request, 'index.html', {'jobs': jobs})
urls.py
urlpatterns = [
path('', views.login, name='login'),
path('ejecutar/<job_name>', views.ejecutar),
path('logdetails', views.detailogs, name = 'logdetails'),
path('home', views.insertar, name='index'),
]
models.py
class Usuarios(models.Model):
id = models.AutoField(primary_key=True)
username = models.CharField(max_length=100)
class Jobs(models.Model):
id = models.AutoField(primary_key=True)
job_name = models.CharField(max_length=100)
flag_activo = models.BooleanField(default=True)
flag_params = models.BooleanField(default=False)
class DetailJobUser(models.Model):
id = models.AutoField(primary_key=True)
user = models.ForeignKey(Usuarios, on_delete=models.CASCADE)
job = models.ForeignKey(Jobs, on_delete=models.CASCADE)
class Parametros(models.Model):
id = models.AutoField(primary_key=True)
job = models.ForeignKey(Jobs, on_delete=models.CASCADE)
parameter_name = models.CharField(max_length=100)
parameter_type = models.CharField(max_length=100)
parameter_value = models.CharField(max_length=100)
index.html (список вакансий)
{% extends "base.html" %}
{% block title %} Listado de Jobs {% endblock %}
{% block body %}
<div class="row">
<div class="col-sm-12 col-md-8 col-lg-10 col-xl-10">
<h1>Listado de Jobs</h1>
<div class="table-responsive py-2">
<table class="table table-striped">
<thead>
<tr>
<th>Nombre</th>
<th>Ejecutar</th>
</tr>
</thead>
<tbody>
{% for i in jobs %}
<tr>
<td>{{ i.job.job_name }}</td>
<td>
<a href="/ejecutar/{{i.job.job_name}}" class="btn btn-primary">Ejecutar</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
{% endblock %}
parameters.html
<div class="container">
<div class="row">
<div class="col-md-4 offset-md-4">
<br><br>
<div class="card">
<div class="card-header">
<h3>Parámetros</h3>
</div>
<div class="card-body">
<form method="post">
{% for i in parameters %}
<!-- Parameters input -->
<div class="form-outline mb-4">
<label class="form-label" for="form2Example1">{{ i.parameter_name }}</label>
{% if i.parameter_type == 'Int' %}
<input type="number" id="form2Example1" class="form-control" name="parameter" />
{% else %}
{% if i.parameter_type == 'Decimal' %}
<input type="number" id="form2Example1" class="form-control" name="parameter" />
{% else %}
{% if i.parameter_type == 'String' %}
<input type="text" id="form2Example1" class="form-control" name="parameter" />
{% else %}
{% if i.parameter_type == 'Date' %}
<input type="date" id="form2Example1" class="form-control" name="parameter" />
</div>
{% endfor %}
<!-- Submit button -->
<button type="submit" class="btn btn-primary btn-block mb-4">Ejecutar</button>
</form>
</div>
</div>
</div>
</div>
</div>