我正在尝试设置网络应用。我在将host_id传递到模板.html文件时遇到问题
我得到:
Reverse for 'about_abc' with arguments '('',)' not found. 1 pattern(s) tried: ['itpassed\\/(?P<host_id>[0-9]+)\\/about\\/$']
inter.html
<li><a href="{% url 'about_abc' host_id %}">about</a></li>
当我使用“ 1”而不是“ host_id”时,它可以工作,但不能像这样保持硬编码。
views.py
from django.shortcuts import render
import warnings
import requests
import json
from django.http import HttpResponse
from django.template import loader
from .models import Host
[...]
def inter(request, host_id):
return render(request, 'itpassed/inter.html')
def about_abc(request, host_id):
response = requests.get(
'abc.net:1768/abc/api/v1/about',
verify='/cert/cacerts.pem',
headers={'Accept': 'application/json', 'Authorization': 'Basic xxxxxxxxxxxxxxxxxxxxxx'},
)
return HttpResponse(response.content)
urls.py
from django.urls import path
from .models import Host
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('<int:host_id>/', views.inter, name='inter'),
path('<int:host_id>/about/', views.about_abc, name='about_abc'),
]
如何解决此问题?据我所见,views.py应该将host_id传递给模板。 为什么硬编码的“ 1”有效,但host_id无效? 谢谢
答案 0 :(得分:2)
def inter(request, host_id):
return render(request, 'itpassed/inter.html')
您在此处没有将任何内容传递给inter.html
模板-因此host_id
模板变量将不包含任何值。
我相信您想要这个:
def inter(request, host_id):
return render(request, 'itpassed/inter.html', {"host_id": host_id})