Создание простой формы с помощью django и поиск в базе данных SQL
Я пытаюсь создать форму, которая позволит пользователям осуществлять поиск в базе данных. Предполагаемый язык - django. Я создал базу данных бэкенда для простой схемы студента, и в конечном итоге у меня будет хранимая процедура, которая принимает различные параметры, если любой из параметров указан, то будет выполнен поиск в базе данных и возвращены результаты. Для целей этого упражнения для поиска будет достаточно и простой таблицы.
Я немного почитал и смог придумать следующее, однако это кажется бревенчатым путем от того, чего я пытаюсь достичь, ниже показан прототип того, чего я пытаюсь достичь. В качестве базы данных используется SQL сервер, я настроил базу данных с помощью django и создал таблицу/таблицы.
Я также хотел бы понять, как работать с таблицами стилей, чтобы создавать красивые, но простые страницы.
В моем файле views.py. Вот что у меня есть.
from django.shortcuts import render
from reporting_project.models import sqldbconnection
import pyodbc
def connsql(request):
conn=pyodbc.connect('Driver={sql server};'
'server=localhost\DEV2;'
'Database=django_reporting;'
'Trusted_connection=yes;')
cursor = conn.cursor()
cursor.execute("select student_id, firstname, lastname, fullname, gender , enrollment_date from tbl_students")
result = cursor.fetchall()
return render(request, 'index.html',{'sqldbconnection':result})
if 'searchfield' in request.GET:
searchfield=request.GET['searchfield']
post=Post.objects.filter(student_search=searchfield)
else:
posts=Post.objects.all()
Для urls.py
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
path('',views.connsql)
]
models.py
from django.db import models
class sqldbconnection(models.Model):
firstname = models.CharField(max_length=200)
lastname = models.CharField(max_length=200)
fullname = models.CharField(max_length=400)
gender = models.CharField(max_length=1)
enrollment_date = models.DateField()
под template\index.html
<!DOCTYPE html>
<head>
<p>
<div class="jumbotron barber shadow">
<div class="row">
<div class="col-md-8 offset-2">
<form>
<div class="input-group">
<input name ="search_field" type = "text" placeholder ="search"
<class="form-control form-control-lg"/>
<div class="iniput-group-append">
<button class="btn btn-dark btn-lg"> Search </button>
</div>
</div>
</form>
</div>
</div>
</div>
</p>
<title> Database Connection </title>
<body><centre>
<h1> Student Report</h1>
<table border="1">
<tr>
<th>student_id</th>
<th>firstname</th>
<th>lastname</th>
<th>fullname</th>
<th>gender</th>
<th>enrollment_date</th>
</tr>
{%for datadisplay in sqldbconnection%}
<tr>
<td>{{datadisplay.student_id}}</td>
<td>{{datadisplay.firstname}}</td>
<td>{{datadisplay.lastname}}</td>
<td>{{datadisplay.fullname}}</td>
<td>{{datadisplay.gender}}</td>
<td>{{datadisplay.enrollment_date}}</td>
</tr>
{% endfor %}
</table>
</centre>
</body>
</head>
Создайте таблицы в базе данных.
create table tbl_students
(
student_id int identity(1,1),
firstname varchar(200),
lastname varchar(200),
fullname as firstname + ' ' + lastname,
gender char(1),
enrollment_date datetime
)
insert into tbl_students (firstname,lastname,gender,enrollment_date)
select 'Sean','Smith','M','12/02/2019'
union all
select 'Dean','Yate','M','01/02/2020'
union all
select 'Dina','Bright','F','11/06/2018'
union all
select 'Florence','Styles','F','10/07/2021'
union all
select 'Mike','Dean','M','09/09/2019'
Вот что у меня есть на данный момент, но поиск не работает.