使用 Django 构建 Web 应用程序:症状检测 - 分步指南

2025-04-08T11:25:41+08:00 | 3分钟阅读 | 更新于 2025-04-08T11:25:41+08:00

Macro Zhao

使用 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.htmlresult.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 构建症状检测应用程序的基本设置,允许用户输入他们的症状并获得匹配的疾病列表以及建议的医生。您可以通过添加更多功能来进一步扩展此应用程序,例如用户身份验证、用户配置文件和改进的症状匹配算法。

© 2011 - 2025 Macro Zhao的分享站

关于我

如遇到加载502错误,请尝试刷新😄

Hi,欢迎访问 Macro Zhao 的博客。Macro Zhao(或 Macro)是我在互联网上经常使用的名字。

我是一个热衷于技术探索和分享的IT工程师,在这里我会记录分享一些关于技术、工作和生活上的事情。

我的CSDN博客:
https://macro-zhao.blog.csdn.net/

欢迎你通过评论或者邮件与我交流。
Mail Me

推荐好玩(You'll Like)
  • AI 动·画
    • 这是一款有趣·免费的能让您画的画中的角色动起来的AI工具。
    • 支持几十种动作生成。
我的项目(My Projects)
  • 爱学习网

  • 小乙日语App

    • 这是一个帮助日语学习者学习日语的App。
      (当然初衷也是为了自用😄)
    • 界面干净,简洁,漂亮!
    • 其中包含 N1 + N2 的全部单词和语法。
    • 不需注册,更不需要订阅!完全免费!
  • 小乙日文阅读器

    • 词汇不够?照样能读日语名著!
    • 越读积累越多,积跬步致千里!
    • 哪里不会点哪里!妈妈再也不担心我读不了原版读物了!
赞助我(Sponsor Me)

如果你喜欢我的作品或者发现它们对你有所帮助,可以考虑给我买一杯咖啡 ☕️。这将激励我在未来创作和分享更多的项目和技术。🦾

👉 请我喝一杯咖啡

If you like my works or find them helpful, please consider buying me a cup of coffee ☕️. It inspires me to create and share more projects in the future. 🦾

👉 Buy me a coffee