如何解决如何在 Django 中使用下拉框渲染到模板?
我是 Django 初学者。我在渲染到模板时遇到了问题。 我有一个模型(models.py),它的类是“FuelInfo”;包括外键。
from django.db import models
class Traveler(models.Model):
traveler_name = models.CharField(max_length=10)
def __str__(self):
return self.traveler_name
class FuelInfo(models.Model):
name = models.ForeignKey(Traveler,on_delete=models.SET_NULL,null=True)
car = models.CharField(null=True,max_length=50)
efficiency = models.FloatField()
def __str__(self):
return str(self.name)
还有 views.py 就像:
from django.shortcuts import render,get_object_or_404
from .models import FuelInfo
def traveler_list(request):
travelers = FuelInfo.objects.all()
context = {'travelers':travelers}
return render(request,'fuelcost/home.html',context)
def traveler_detail(request,pk):
traveler = get_object_or_404(FuelInfo,pk=pk)
return render(request,'fuelcost/calfuel.html',{'traveler': traveler})
而 urls.py 是:
from django.urls import path
from . import views
app_name = 'fuelcost'
urlpatterns = [
path('',views.traveler_list,name='home'),path('<int:pk>/',views.traveler_detail,name='calfuel'),]
我想制作一个下拉列表,渲染到 home.html 中的模板“calfuel.html”。 所以我做了一个模板(“home.html”),比如:
{% extends "base_generic.html" %}
{% block content %}
<body>
{% if travelers %}
<form method="POST" action="{% url 'fuelcost:calfuel' pk=traveler.pk %}">
{% csrf_token %}
<select name="traveler">
{% for traveler in travelers %}
<option value="{{ traveler.id }}">{{ traveler.name }}</option>
{% endfor %}
</select>
<input type="submit" value="Select" />
</form>
{% else %}
<p>No travelers are available</p>
{% endif %}
</body>
{% endblock %}
但它不起作用并且我收到错误消息。
(我的 urlpattern 是fuelcost/。) 实际上我可以进入fuelcost/1或fuelcost/2,即名为“calfuel”的views.traveler_detail。但我不能进入燃料成本/即名为“家”的 views.traveler_list。
我不知道我还需要做什么。请告诉我这有什么问题。
解决方法
{% block content %}
<body>
{% if travelers %}
{% for traveler in travelers %}
<form method="POST" action="{% url 'fuelcost:calfuel' pk=traveler.pk %}">
{% csrf_token %}
<select name="traveler">
<option value="{{ traveler.id }}">{{ traveler.name }}</option>
</select>
<input type="submit" value="Select" />
</form>
{% endfor %}
{% else %}
<p>No travelers are available</p>
{% endif %}
</body>
{% endblock %}
你必须将表单保持在循环内,以便它可以得到旅行者的pk
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。