【发布时间】:2021-07-12 05:33:03
【问题描述】:
我正在尝试创建一个包含 2 个按钮的 html 页面,单击其中一个按钮会向页面添加一个表单,如果我单击另一个按钮,则会添加另一个表单
document.addEventListener('DOMContentLoaded', function showAppointementForm() {
document.getElementById("button1").onclick = function() {
document.getElementById("form").innerHTML = `
<form action="{% url 'create_appointement_non_register_patient' %}" method="POST">
{{ form.media }} {{ form.as_p }} {% csrf_token %}
<button type="submit" value="create_appointement_non_register_patient">
ok
</button>
</form>
`
}
document.getElementById("button2").onclick = function() {
document.getElementById("form").innerHTML = `
<form action="{% url 'create_appointement_register_patient' %}" method="POST">
<p>
<label for="patients">select a patient</label>
<select name="patients" id="patients">
<option value="">-- select a patient --</option>
{% for patient in patients %}
<option value="{{patient}}">{{patient}}</option>
{%empty%}
<option value="nothing">nothing</option>
{% endfor %}
</select>
</p> {{ form.media }} {{ form.as_p }} {% csrf_token %}
<button type="submit" value="create_appointement_register_patient">
ok
</button>
</form>
`
}
})
<body>
<div class="container">
<button name="type" class="button1" id="button1">register patient</button>
<button name="type" class="button2" id="button2">non register patient</button>
<div id='form'>
</div>
</div>
<script language="javascripts" type="text/javascripts" src="static/js/onclick.js">
</script>
</body>
我的 js 文件中的代码有问题还是有其他方法可以解决?
这个视图与views.py中2按钮中的2表单一起工作
@login_required
def create_appointement_register_patient(request):
if request.user.is_doctor() or request.user.is_reception():
form_app = AppointmentForm_2(request.POST or None)
user2 = get_user_model()
patients = user2.objects.filter(type_of_user=TypeOfUser.PATIENT)
if request.method=='POST':
form_app = AppointmentForm_2(request.POST or None)
if form_app.is_valid():
form_apps = form_app.save(commit=False)
form_apps.user_ho_add = request.user
start_time = form_apps.start_time
future_time = dt.datetime(1970, 1, 1, start_time.hour, start_time.minute, start_time.second, start_time.microsecond) + timedelta(minutes=30)
form_apps.end_time = dt.time(future_time.hour, future_time.minute, future_time.second, future_time.microsecond)
form_apps.patient = request.POST['patients']
if Appointment.objects.filter(patient=request.POST['patients']).exists():
form_apps.save()
messages.success(request, 'appointment added')
else:
raise ValidationError('patient does not Exist')
else:
messages.error(request, 'Error')
return render(request,'appointement/add_appointement2.html',{'form':form_app, 'patients':patients})
else:
return render(request,'appointement/add_appointement2.html',{'form':form_app, 'patients':patients})
else:
return HttpResponseRedirect(reverse("create_appointement"))
@login_required
def create_appointement_non_register_patient(request):
if request.user.is_doctor() or request.user.is_reception():
form_app = AppointmentForm_3(request.POST or None)
user2 = get_user_model()
patients = user2.objects.filter(type_of_user=TypeOfUser.PATIENT)
if request.method=='POST':
form_app = AppointmentForm_3(request.POST or None)
if form_app.is_valid():
form_apps = form_app.save(commit=False)
form_apps.user_ho_add = request.user
start_time = form_apps.start_time
future_time = dt.datetime(1970, 1, 1, start_time.hour, start_time.minute, start_time.second, start_time.microsecond) + timedelta(minutes=30)
form_apps.end_time = dt.time(future_time.hour, future_time.minute, future_time.second, future_time.microsecond)
form_apps.save()
messages.success(request, 'appointment added')
else:
messages.error(request, 'Error')
return render(request,'appointement/add_appointement3.html',{'form':form_app, 'patients':patients})
else:
return render(request,'appointement/add_appointement3.html',{'form':form_app, 'patients':patients})
else:
return HttpResponseRedirect(reverse("create_appointement"))
【问题讨论】:
标签: javascript django django-templates