Реверс для about_abc с аргументами ((',)) не найден - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь настроить веб-приложение.У меня проблемы с передачей 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 - нет?спасибо

1 Ответ

2 голосов
/ 25 апреля 2019
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})
...