Django - 无法在模板中使用变量创建 url
Django - cannot make url with variable in the template
我想要一个链接到页面的按钮 预约
template.html
{% for key, value in closest_free_spots.items %}
...
<a href="{% url 'make-appointment' value.pk %}"><button type="button">{{ value.datetime }}</button></a>
urls.py
url(r'^umowienie-spotkania/(?P<pk>\d+)/$', TestPy.views.MakingAppointmentView.as_view(),
name='make-appointment'),
然而,当我尝试启动它时,出现错误:
Reverse for 'make-appointment' with arguments '('',)' not found. 1 pattern(s) tried: ['umowienie-spotkania/(?P<pk>\d+)/$']
看起来 value.pk 不正确,但是当我在上面打印一行时,它给出了正确的值(即 4)。
有什么问题?我错过了什么?
closest_free_spots 定义 - 值是来自 CalendarFreeSlot 模型
的对象
closest_free_spots = {
lawyer: TestPy.models.CalendarFreeSlot.objects.filter(Q(lawyer_id=lawyer) & Q(is_available=True)).first() for
lawyer in object_list}
models.py
class CalendarFreeSlot(models.Model):
lawyer_id = models.ForeignKey('MyUser', on_delete=models.PROTECT)
datetime = models.DateTimeField()
is_available = models.BooleanField(default=True)
你的 closest_free_spots
字典理解使用 CalendarFreeSlot.objects.filter(...).first()
,它可以 return None
。这导致错误消息的 with arguments '('',)'
部分。
在模板中检查 {{ value.pk }}
是个好主意,但您似乎没有注意到字典中的每个项目都没有值。
您可以通过检查模板中的 {% if value %}
来处理此问题。
{% for key, value in closest_free_spots.items %}
{% if value %}
<a href="{% url 'make-appointment' value.pk %}"><button type="button">{{ value.datetime }}</button></a>
{% else %}
{{ key }} has not free spots
{% endif %}
{% endfor %}
我想要一个链接到页面的按钮 预约
template.html
{% for key, value in closest_free_spots.items %}
...
<a href="{% url 'make-appointment' value.pk %}"><button type="button">{{ value.datetime }}</button></a>
urls.py
url(r'^umowienie-spotkania/(?P<pk>\d+)/$', TestPy.views.MakingAppointmentView.as_view(),
name='make-appointment'),
然而,当我尝试启动它时,出现错误:
Reverse for 'make-appointment' with arguments '('',)' not found. 1 pattern(s) tried: ['umowienie-spotkania/(?P<pk>\d+)/$']
看起来 value.pk 不正确,但是当我在上面打印一行时,它给出了正确的值(即 4)。
有什么问题?我错过了什么?
closest_free_spots 定义 - 值是来自 CalendarFreeSlot 模型
的对象 closest_free_spots = {
lawyer: TestPy.models.CalendarFreeSlot.objects.filter(Q(lawyer_id=lawyer) & Q(is_available=True)).first() for
lawyer in object_list}
models.py
class CalendarFreeSlot(models.Model):
lawyer_id = models.ForeignKey('MyUser', on_delete=models.PROTECT)
datetime = models.DateTimeField()
is_available = models.BooleanField(default=True)
你的 closest_free_spots
字典理解使用 CalendarFreeSlot.objects.filter(...).first()
,它可以 return None
。这导致错误消息的 with arguments '('',)'
部分。
在模板中检查 {{ value.pk }}
是个好主意,但您似乎没有注意到字典中的每个项目都没有值。
您可以通过检查模板中的 {% if value %}
来处理此问题。
{% for key, value in closest_free_spots.items %}
{% if value %}
<a href="{% url 'make-appointment' value.pk %}"><button type="button">{{ value.datetime }}</button></a>
{% else %}
{{ key }} has not free spots
{% endif %}
{% endfor %}