使用 Django 构建 Web 应用程序:症状检测 - 分步指南
推荐超级课程:
@TOC
在本教程中,我们将使用 Django 创建一个基于 Web 的 症状检测 应用程序。Django 是一个高级 Python Web 框架。该应用程序将允许用户输入他们的症状,并获得建议的疾病诊断以及建议咨询的医生列表。
完整源码: 医院症状检查系统源码
先决条件
在开始之前,请确保您已安装以下软件:
- Python 3.10 或更高版本
- Django 4.2 或更高版本
第 1 步:设置 Django 项目
首先,创建一个新的 Django 项目并导航到项目目录:
pip install django
django-admin startproject symptom_checker_project
cd symptom_checker_project
第 2 步:创建 Django 应用程序
创建一个名为 symptom_checker_app
的 Django 应用程序:
python manage.py startapp symptom_checker_app
第 3 步:在 setting.py 中添加应用程序名称
您需要在 INSTALLED_APPS
中添加应用程序名称 setting.py 文件:
INSTALLED_APPS = [
# 在这里定义您的应用程序...
'symptom_checker_app',
]
第 4 步:定义模型
在 symptom_checker_app/models.py
文件中,定义疾病、症状和医生的模型:
from django.db import models
class Patient(models.Model):
name = models.CharField(max_length=100)
gender = models.CharField(max_length=10)
age = models.IntegerField()
def __str__(self):
return self.name
class Symptom(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
class Disease(models.Model):
name = models.CharField(max_length=100)
symptoms = models.ManyToManyField(Symptom)
def __str__(self):
return self.name
class Doctor(models.Model):
name = models.CharField(max_length=100)
specialties = models.ManyToManyField(Disease, related_name='doctors')
def __str__(self):
return self.name
第 5 步:创建表单
在 symptom_checker_app/forms.py
文件中,为症状检测创建一个表单:
from django import forms
from .models import Symptom
class SymptomCheckForm(forms.Form):
name = forms.CharField(label='姓名', max_length=100)
gender = forms.ChoiceField(choices=[('male', '男'), ('female', '女')], widget=forms.RadioSelect)
age = forms.IntegerField()
symptoms = forms.ModelMultipleChoiceField(queryset=Symptom.objects.all(), widget=forms.CheckboxSelectMultiple)
第 6 步:创建视图
在 symptom_checker_app/views.py
文件中,定义视图以处理症状检测:
from django.shortcuts import render
from .models import Patient, Symptom, Disease, Doctor
from .forms import SymptomCheckForm
def symptom_checker(request):
symptoms = Symptom.objects.all()
if request.method == 'POST':
form = SymptomCheckForm(request.POST)
if form.is_valid():
name = form.cleaned_data['name']
gender = form.cleaned_data['gender']
age = form.cleaned_data['age']
selected_symptoms = form.cleaned_data['symptoms']
# 根据需要创建患者记录
# patient = Patient.objects.create(name=name, gender=gender, age=age)
# 执行症状分析和疾病匹配
matching_diseases = Disease.objects.filter(symptoms__in=selected_symptoms).distinct()
if matching_diseases.exists():
suggested_doctors = Doctor.objects.filter(specialties__in=matching_diseases.values('pk'))
return render(request, 'result.html', {'name': name, 'diseases': matching_diseases, 'doctors': suggested_doctors})
else:
return render(request, 'result.html', {'name': name, 'message': '未找到匹配的疾病。'})
else:
form = SymptomCheckForm()
return render(request, 'symptom_checker.html', {'form': form})
第 7 步:创建模板
创建 HTML 模板以显示症状检测表单和结果。在 templates
目录中,创建 symptom_checker.html
和 result.html
文件。
symptom_checker.html
:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>症状检测</title>
</head>
<body>
<h1>症状检测</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">检查症状</button>
</form>
</body>
</html>
result.html
:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>症状检测结果</title>
</head>
<body>
<h1>结果</h1>
{% if message %}
<p>{{ message }}</p>
{% else %}
<p>您好,{{ name }}!</p>
<p>匹配的疾病:</p>
<ul>
{% for disease in diseases %}
<li>{{ disease.name }}</li>
{% endfor %}
</ul>
<p>建议的医生:</p>
<ul>
{% for doctor in doctors %}
<li>{{ doctor.name }}</li>
{% endfor %}
</ul>
{% endif %}
</body>
</html>
第 8 步:定义 URL
在 symptom_checker_project/urls.py
文件中配置 URL 模式:
from django.contrib import admin
from django.urls import path
from symptom_checker_app import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.symptom_checker, name='symptom_checker'),
]
第 9 步:运行服务器
最后,运行 Django 开发服务器以查看症状检测应用程序:
python manage.py runserver
在您的网络浏览器中访问 http://localhost:8000/ 以访问症状检测表单并输入患者数据以进行症状分析。
总结
本教程涵盖了使用 Django 构建症状检测应用程序的基本设置,允许用户输入他们的症状并获得匹配的疾病列表以及建议的医生。您可以通过添加更多功能来进一步扩展此应用程序,例如用户身份验证、用户配置文件和改进的症状匹配算法。