Получение ошибки: обратное для «update» с аргументами «(1,)» в django - PullRequest
0 голосов
/ 26 апреля 2019

при запуске программы выдает ошибку, Reverse for 'update' with arguments '(1,)' not found. 1 pattern(s) tried: ['crud/add/<:id>$'], я загружаю список данных, но получаю ошибку на <td><a href="{% url 'crud:update' page.id %}">Edit</a></td>, здесь я добавил весь код, может кто-нибудь помочь мне решить эту проблему

views.py

from django.shortcuts import render

# Create your views here.


from django.http import HttpResponse, HttpResponseRedirect
from django.template import loader
from .models import Pages
from django.urls import reverse
from django.shortcuts import get_object_or_404, render



def index(request):
    pagelist = Pages.objects.all()
    context = {'pagelist': pagelist}
    return render(request, 'polls/index.html', context)

def add(request):
    if request.POST:
        title = request.POST.get("title")
        permialink = request.POST.get("permialink")
        updated_date = request.POST.get("updated_date")
        bodytext = request.POST.get("bodytext")

        page_data = Pages(title=title,permialink=permialink,updated_date=updated_date,bodytext=bodytext)
        page_data.save()
        return HttpResponseRedirect("/");
    else:
        return render(request,'polls/add.html')

index.html

{% load static %}

<link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}">

<table>
    <tr>
        <th>Page Title</th>
        <th>Update Date</th>
        <th>Action</th>
    </tr>
    {% if pagelist %}
        {% for page in pagelist %}
            <tr>
                <td>{{ page.title }}</td>
                <td>{{ page.updated_date }}</td>
                <td><a href="{% url 'crud:update' page.id %}">Edit</a></td>
            </tr>
        {% endfor %}
    {% else  %}
            <tr>
                <td colspan="2">Np Pages are available</td>
            </tr>
    {% endif %}
</table>

urls.py

from django.urls import path

from . import views

app_name = 'crud'
urlpatterns = [
    path('',views.index, name='index'),
    path('add/',views.add, name='add'),
    path('add/<:id>',views.add, name='update'),
]

1 Ответ

4 голосов
/ 26 апреля 2019

<:id> неверно. Измените его на:

path('add/<id>', views.add, name='update'),

Или укажите преобразователь пути . Например, если id является целым числом, используйте:

path('add/<int:id>', views.add, name='update'),
...