Django 显示源代码而不是网页

Django displays source code instead of web page

我是 django 的新手。任何帮助将不胜感激。它显示源代码而不是网页。具体来说是基页 (base.html)。我想要的是使用来自不同组的患者详细信息和医生详细信息的数据。我认为问题出在我通过字典时。

Views.py

def booking(request):
    if not request.user.is_active:
        messages.success(
            request, ("In order to book an appointment you must login first"))
        return redirect('login')
    doctor_details = Doctor.objects.all()
    f = {'doctor_details': doctor_details}
    g = request.user.groups.all()[0].name
    if g == 'Patient':
        patient_details = Patient.objects.all().filter(EmailAddress=request.user)
        d = {'patient_details': patient_details}
    return render(request, 'booking.html', f, d)

Html

{% extends 'base.html' %}

{% block content %}
{% load static %}


<div class="loginContainer">
    <div class="img">
        <img src="{% static 'image/booking.svg' %}">
    </div>
    <div class="login-content">
        {% for d in patient_details %}
        <form method="POST" id="signupForm">
            {% for f in doctors_details %}
            {% csrf_token %}
            <h2 class="title">Booking form</h2>
            <div class="input-div one">
                <div class="i">
                    <ion-icon name="person-circle"></ion-icon>
                </div>
                <div class="div">
                    <h5>Patient ID: PID - {{d.id}}</h5>
                </div>
            </div>
            <div class="input-div one">
                <div class="i">
                    <ion-icon name="person"></ion-icon>
                </div>
                <div class="div">
                    <h5>Name: {{d.FirstName}} {{d.LastName}}</h5>
                </div>
            </div>
            <div class="input-div one">
                <div class="i">
                    <ion-icon name="business"></ion-icon>
                </div>
                <div class="div">
                    <h5>Department</h5>
                    <input type="text" class="input" name="age" required>
                </div>
            </div>
            <div class="input-div one">
                <div class="i">
                    <ion-icon name="medkit"></ion-icon>
                </div>
                <div class="div">
                    <h5>{{f.name}}</h5>
                    <input type="text" class="input" name="age" required>
                </div>
            </div>
            <div class="input-div one">
                <div class="i">
                    <ion-icon name="bandage"></ion-icon>
                </div>
                <div class="div">
                    <h5>Symptoms</h5>
                    <input type="textarea" class="input" name="address" required>
                </div>
            </div>
            <div class="input-div one">
                <div class="i">
                    <ion-icon name="document-text"></ion-icon>
                </div>
                <div class="div">
                    <h5>Comments (Optional)</h5>
                    <input type="textarea" class="input" name="address">
                </div>
            </div>
            <button type="submit" class="loginBtn">Submit</button>
            <a href="userProfile" class="section-btn btn btn-default btn-blue smoothScroll">Return to Personal Profile</a>
            <a href="./" class="section-btn btn btn-default btn-blue smoothScroll">Cancel Booking</a>
            {% endfor %}
        </form>
        {% endfor %}
    </div>
</div>
{% ifequal error 'no' %}
<script type="text/javascript">
    alert("You have successfully registered.")
    window.location = ('loginPage')
</script>
{% endifequal %}
{% ifequal error 'yes' %}
<script type="text/javascript">
    alert("Something went wrong.")
</script>
{% endifequal %}
{% endblock %}

Urls.py

from django.urls import path
from . import views
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('', views.index),
    path('contact', views.contact),
    path('loginPage', views.loginPage, name='login'),
    path('doctorlogin', views.doctorlogin, name='doclogin'),
    path('help', views.help),
    path('signup', views.signup, name='signup'),
    path('doctors', views.doctors, name='doctors'),
    path('booking', views.booking, name='booking'),
    path('userProfile', views.userProfile, name='userProfile'),
    path('doctorProfile', views.doctorProfile, name='doctorProfile'),
    path('logout', views.logout, name='logout')
]

urlpatterns = urlpatterns + \
    static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

您应该将上下文作为一本字典传递。您可以使用 update 方法将新项目添加到您的词典中:

def booking(request):
    if not request.user.is_active:
        messages.success(
            request, ("In order to book an appointment you must login first"))
        return redirect('login')
    doctor_details = Doctor.objects.all()
    f = {'doctor_details': doctor_details}
    g = request.user.groups.all()[0].name
    if g == 'Patient':
        patient_details = Patient.objects.all().filter(EmailAddress=request.user)
        f.update({'patient_details': patient_details}) # Using update
    return render(request, 'booking.html', f)

感谢大家的贡献。我发现了我的错误。问题出在我使用 views.py 的方式上。上面的答案是正确的,但我更喜欢这样使用。 Views.py

def booking(request):
    if not request.user.is_active:
        messages.success(
            request, ("In order to book an appointment you must login first"))
        return redirect('login')
    doctor_details = Doctor.objects.all()
    g = request.user.groups.all()[0].name
    if g == 'Patient':
        patient_details = Patient.objects.all().filter(EmailAddress=request.user)
        d = {'patient_details': patient_details,
             'doctor_details': doctor_details} #edited part
    return render(request, 'booking.html', d)

以及 html 部分。 Html

{% extends 'base.html' %}

{% block content %}
{% load static %}


<div class="loginContainer">
    <div class="img">
        <img src="{% static 'image/booking.svg' %}">
    </div>
    <div class="login-content">
        <form method="POST" id="signupForm">
            {% csrf_token %}
            <h2 class="title">Booking form</h2>
            {% for f in patient_details%} #here is the change
            <div class="input-div one">
                <div class="i">
                    <ion-icon name="person-circle"></ion-icon>
                </div>
                <div class="div">
                    <h5>Patient ID: PID - {{f.id}}</h5>
                </div>
            </div>
            <div class="input-div one">
                <div class="i">
                    <ion-icon name="person"></ion-icon>
                </div>
                <div class="div">
                    <h5>Name: {{f.FirstName}} {{f.LastName}}</h5>
                </div>
            </div>
                {% endfor %}
            <div class="input-div one">
                <div class="i">
                    <ion-icon name="business"></ion-icon>
                </div>
                <div class="div">
                    <h5>Department</h5>
                    <input type="text" class="input" name="age" required>
                </div>
            </div>
            <div class="input-div one">
                <div class="i">
                    <ion-icon name="medkit"></ion-icon>
                </div>
                <div class="div">
                    <div class="custom-select">
                        <select name="doctors" required>
                            {% for f in doctor_details %} #here is the change
                                <option value="{{f.name}}">{{f.name}}</option>
                            {% endfor %}
                        </select>
                    </div>
                </div>
            </div>
            <div class="input-div one">
                <div class="i">
                    <ion-icon name="bandage"></ion-icon>
                </div>
                <div class="div">
                    <h5>Symptoms</h5>
                    <input type="textarea" class="input" name="address" required>
                </div>
            </div>
            <div class="input-div one">
                <div class="i">
                    <ion-icon name="document-text"></ion-icon>
                </div>
                <div class="div">
                    <h5>Comments (Optional)</h5>
                    <input type="textarea" class="input" name="address">
                </div>
            </div>
            <button type="submit" class="loginBtn">Submit</button>
            <a href="userProfile" class="section-btn btn btn-default btn-blue smoothScroll">Return to Personal Profile</a>
            <a href="./" class="section-btn btn btn-default btn-blue smoothScroll">Cancel Booking</a>
        </form>
    </div>
</div>
{% ifequal error 'no' %}
<script type="text/javascript">
    alert("You have successfully registered.")
    window.location = ('loginPage')
</script>
{% endifequal %}
{% ifequal error 'yes' %}
<script type="text/javascript">
    alert("Something went wrong.")
</script>
{% endifequal %}
{% endblock %}